php弱类型进阶


error_reporting(0);
echo "<!--code is in code.txt-->";

if(!$_GET['code'])
{
	header('Location: index.php?code=1');
	exit();
}
$param1=$_GET['param1'];
$param2=$_GET['param2'];
$code=$_GET['code'];

if(stripos($param2,'.'))
{
	echo 'No1';
	return ;
}
$data = @file_get_contents($param1,'r');
if($data=="1112 is a nice lab!" and $code==0 and strlen($param2)>5 and eregi("111".substr($param2,0,1),"1114") and substr($param2,0,1)!=4)
{
	require("flag*******************.txt");
}
else
{
	print "No2";
}

?>

先分析一波源码,

1.如果没有获得code值将code赋值为1,退出。

2.get方式获得param1,param2,code值,param2中不能含有.,

3.看到file_get_contents()想到php://input传值。

4.看到eregi()想到%00截断

5.如果data="1112 is a nice lab!" &param2长度大于5并且1不能匹配1114,并且param2的第一个数不等于4,输出flag

构造payload

?code=param1&param1=php://input&param2=%00111444
post传值:1112 is a nice lab!

成功获得flag。

猜你喜欢

转载自blog.csdn.net/qq_40657585/article/details/83651609
今日推荐