0x00 BabySQli
原題目描述:剛學完sqli,我才知道萬能口令這么危險,還好我進行了防護,還用md5哈希了密碼!
登陸頁面,查看源碼后點進search.php看到一段可疑的句子MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5,嘗試base32+base64解密后得到select * from user where username = '$name'
嘗試user=admin&pass=123 提示為wrong pass,再嘗試user=aa提示wrong user,說明有admin這個user的。
嘗試union聯(lián)合注入,user=' union select 1,2,3 #不報錯,user=' union select 1,2,3,4 #報錯了
發(fā)現(xiàn)應(yīng)該是有三個字段的。猜測這三個字段可能是編號或ip之類的,然后user和password。user框輸入' union select 1,'admin',3#不報錯,證明第二個字段確實是user,那么猜測第三個字段是password,看來還是用md5加密過的。
0x02 一個知識點
當查詢的數(shù)據(jù)不存在的時候,聯(lián)合查詢就會構(gòu)造一個虛擬的數(shù)據(jù)。
比如:(自己沒這個環(huán)境也沒搭建,借其他博客的圖片舉個例子,大佬莫怪)
原先的表有這三個字段,有這樣的數(shù)據(jù)內(nèi)容

原先的表
我們?nèi)绻诓樵兊臅r候輸入這樣的查詢語句:
查詢語句
發(fā)現(xiàn)我們在聯(lián)合查詢并不存在的數(shù)據(jù)時,聯(lián)合查詢就會構(gòu)造一個虛擬的數(shù)據(jù)。這時候直接在pass框里面輸入
e10adc3949ba59abbe56e057f20f883e的md5解密結(jié)果就可以了。
0x03 payload+總結(jié)
payload:
username欄:'union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
password欄:123456
總結(jié):這個題考察的就是簡單的手工注入+聯(lián)合查詢查詢不存在數(shù)據(jù)會構(gòu)造虛擬的數(shù)據(jù)。