BUGKU-web21
作者:互联网
BUGKU-web21
打开题目后,发现没有信息,查看网页源代码
发现可疑之处:1p.html
尝试直接访问1p.html
会跳转到bugku的首页。想到查看1p.html的源代码。
显示的是一串JS代码,将这段代码放到BP或者其他工具中,进行解码:
首先进行URL解码,得到
将注释起来的内容进行base64解码:
再次执行url解码
得到一串代码:
if(!$_GET['id'])//如果不传递id参数,则会跳转到hello.php页面,且id参数置1
{
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的文件内容并赋值给data
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)
//data弱等于"bugku is a nice plateform!",id弱等于0,b的长度要大于5,“111”连接b的第0个字符要弱等于"1114",b的第0个字符要不等于4
{
$flag = "flag{***********}"
}
else
{
print "never never never give up !!!";
}
?>
代码审计,得出需要data弱等于"bugku is a nice plateform!",id弱等于0,b的长度要大于5,“111”连接b的第0个字符要弱等于"1114",b的第0个字符要不等于4,即可得到flag
首先是id
这里用到的是PHP中的0e
绕过,由于PHP是弱类型语言,在数字开头的字符串与数字进行弱类型比较==
时,会用第一个非数字之前的字符转化成数字后与数字进行比较。
题目中要求id不能为0
或者false
,同时id==0
,因此可以使用弱类型绕过。让id=0e123456
关于a
这里使用php伪协议,绕过file_get_contents()
函数,所以a=php://input,然后使用POST方法传递bugku is a nice plateform!
即可
关于b
题中要求b的第0个字符不为4,但是又要求第0个字符与"111"拼接之后弱等于"1114"。
这里应该联想到正则表达式,让b以通配符*
开头,且长度大于5
所以可以让b=*123456
最终得到flag。
标签:bugku,no,web21,BUGKU,等于,data,id,个字符 来源: https://www.cnblogs.com/OHuooo/p/14670610.html