1. 程式人生 > 資料庫 >深入淺出帶你玩轉sqlilabs(三)

深入淺出帶你玩轉sqlilabs(三)

常見提交方式下的注入漏洞

 WEB應用在資料傳遞接受中,針對SQL注入安全漏洞,由於資料大小,格式等原因,指令碼在接受傳遞時會有多種傳遞方式,傳遞方式的不同將影響到安全測試的不同

第一點:資料常見提交方式

 

 

get與request提交方式:

本地測試,直接使用連結傳參,各種提交方式的效果如下圖,get與request提交方式本地有回顯,說明這兩個提交方式可以通過連結傳參傳送到伺服器

 

 

post提交方式:

給伺服器同時本地echo回顯:用post data外掛,或者用burpsuite抓包改資料

 

 

cookie提交方式:

用burpsuite直接在響應正文插入cookie值

 

 

$_SERVER['HTTP_ACCEPT']的作用(頭部注入)

 

 

 

 

post注入:11關

先輸入賬戶加個’看看報錯

 

分析:

 

引數有第2對單引號進行閉合,就好辦了

 

注意:注入的方式有三個:post data外掛,burpsuite抓包改包,還有直接在框裡面直接填

這裡推薦用post data外掛,簡單直觀,先右鍵檢視源程式碼表單哪些元素要post提交的

 

 

就這三個元素(提交的時候一個也不能漏)

後臺原始碼中uname有單引號,我們可以進行閉合

 

用uname引數進行閉合(三個引數之間用&連線)

 

uname=-gsdftg' order by 2#&passwd=pass&submit=Submit

報錯負號(顯示錯誤資訊),閉合單引號(執行我們的命令),註釋負號#(不使用--+註釋的原因是:POST引數不經過url編碼,命令傳輸到後端註釋符變不了標準註釋符:-- (後面有空格))

 

 

注入成功

 

 

 

cookie注入:20關

 隨便輸入表單,抓一下包,第一個包(POST包)是登入驗證的請求包,將cookie儲存在伺服器同時在本地留下session資訊

 

再裡面加個cookie資訊,然後放過去

第二個包(GET包)直接驗證cookie,與第一個包相互匹配,一樣改個cookie,放過去

 

 

登入成功,檢視歷史包找到GET包,改包

 

報錯

 

報錯,註釋,一把梭

 

補充:request請求方式是包含其他請求方式(GET,POST,COOKIE等)的,也就是說,用其他請求方式請求的資料,request請求也可以做到,這個適用範圍就很廣了,如bypass方面等

 

 

 

 

萬能密碼(POST登入框):11關

 

在登入框輸入(知道使用者名稱admin)

 先來看一下正常登陸進去的介面,正確的賬號密碼都是admin

 

 

 

同時抓包看看資料傳輸與SQL語句執行

 

 

可以看到這裡的uname與passwd引數傳遞到SQL語句中的username與password引數中進行查詢,由於①username and ②password 的邏輯判斷:真and真=真,所以可以登入成功,那麼我們只需要構造一個邏輯判斷為真的SQL引數,即可進行萬能登入的操作

 

比如在使用者名稱輸入框中輸入:

admin' or '1'='1#        //邏輯判斷:真或真=真,可登入,最後別忘了用#號註釋掉後面的SQL語句

 

或者

admin' or 1=1#            真或真=真

 

或者

admin'and ''=''#        真或假=真

 

或者

admin'or'        真或假=真

 

 

在登入框輸入(未知使用者名稱)

 

思路一樣,只是將username引數變為假,password為真的“or”判斷

'or '1'='1'limit 1#        假或真=真    (limit語句要不要都一樣)