其他分享
首页 > 其他分享> > BUGKU-web21

BUGKU-web21

作者:互联网

BUGKU-web21

image-20210417080624243

打开题目后,发现没有信息,查看网页源代码

image-20210417080655273

发现可疑之处:1p.html

尝试直接访问1p.html

image-20210417080733421

会跳转到bugku的首页。想到查看1p.html的源代码。

image-20210417080813427

显示的是一串JS代码,将这段代码放到BP或者其他工具中,进行解码:

首先进行URL解码,得到

image-20210417080928906

将注释起来的内容进行base64解码:

image-20210417081022089

再次执行url解码

image-20210417081043863

得到一串代码:

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

image-20210417084312509

最终得到flag。

标签:bugku,no,web21,BUGKU,等于,data,id,个字符
来源: https://www.cnblogs.com/OHuooo/p/14670610.html