sql-labs(11-12)萬能密碼登錄
第十一關:
這關是一個登陸口,也是一個sql注入的漏洞,也就是常說的萬能密碼。
在輸入框賬號密碼種分別輸入 1’ 和1’ 頁面會報錯。
后臺使用的單引符號進行的拼接。賬號輸入1’ or ‘1’=‘1 密碼輸入 1’ or ‘1’='1
其實輸入任意賬號 密碼輸入1’ or ‘1’='1也可以進去。
這關是考驗報錯注入,其實我個人感覺應該是有盲注的,但是我使用1’ or ascii(substr((select user()),1,1)>64 # 注入時會報錯,目前不知道是什么原因。(補充:后來發現是可以盲注的,這里的語句寫錯了,少了一個右括號,應該是1’ or ascii(substr((select user()),1,1))>64 # !!! 好吧 ,手工就是容易出錯)
這里還是先使用報錯注入吧:
這里先介紹一下報錯函數extractvalue(),在hackbar種輸入輸入如下
uname=1&passwd=1’ and extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1))) #&submit=Submit
上面說了本來想用盲注的,但是總是不成功。于是我就想文件中的報錯語句注釋后使用sqlmap跑了一次(這個時候應該是不存在上面所說的報錯注入了)
使用sqlmap跑了一次,發現還是能拋出注入漏洞,如下圖:
好吧!聯合注入,第一關的類容。。。。。說明我們還是得靈活運用才行啊。。。
如下圖:查詢得信息會在用戶信息中顯示出來
第十二關:
輸入’ 和" 頁面都沒有任何變化,這里有點意思的是如果后臺是’‘’(三個單引號),sql執行會報錯,但如果是"“”(三個雙引號),sql執行卻不會報錯。如下圖
所以這個時候我們最好輸入’"(一個單元符號一個雙引符號),來讓程序報錯從而判斷后來sql是怎么進行拼湊的(如果有報錯信息的話)
可以看到這里應該使用雙引符號,然后再加上括號的形式。
后面就好辦了,post數據輸入uname=1") or 1=1 #&passwd=1&submit=Submit
成功登陸,后面的操作就和十一關一樣了