题目:
never never never give up !!!
F12查看源码,发现

进入1p.html,结果跳转到bugku.com,使用bp抓包

得到base64编码,转码得

得到url编码,转码得
";if(!$_GET['id']) //id不能为0,不然会重定向
{
header('Location: hello.php?id=1');
exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.')) //不允许a中有.
{
echo 'no no no no no no no';
return ;
}
$data = @file_get_contents($a,'r'); //取a为名字的文件
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
$flag = "flag{***********}"
}
else
{
print "never never never give up !!!";
}
?>
- stripos():查找参数2在参数1中第一次出现的位置
- file_get_contents() 把整个文件读入一个字符串中
- eregi()以区分大小写的方式在 参数一中寻找与给定的正则表达式(参数2)所匹配的子串。
- 取a为名字的文件,考虑用php://input
- id要==0,需要满足条件。而且id不能=0,不然会重定向。所以id=”0“.
- 不允许a中有.
- b的长度大于5
- b的第一位只要为4就可以与111连成1114
- b的第一位要是4。与上一步矛盾。原来eregi可以用空字符来绕过,url中的空字符是%00
综上,构造参数id=“0”&a=php://input&b=%004asdasd,并且增加input

589

被折叠的 条评论
为什么被折叠?



