BugkuCTF web:web基础$_POST; 矛盾

web基础$_POST

php代码是:

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

用postman发送一个post请求,body里的参数是KEY=what     VALUE=flag

response回应得到答案  flag{bugku_get_ssseint67se}

矛盾

php代码是:

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

发送的num首先不是数字,后要等于1,作为新手并不知道怎么整。

is_numeric() 可以有效阻挡,就是数字及数字字符串,

$num == 1 也没得啥问题

可能原因之一是:

 PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。

网址输入:

http://123.206.87.240:8002/get/index1.php?num=1%01

参数会被从1%后面开始截断,即直接砍掉,此时等于1和

可能原因之二:

PHP是弱类型的语言,==表示的是等于 ,只要数值等于就可以了,类型无所谓

所以直接自己构造一个以1开头后面是是非数字的字符串即可,例如1x,1*

这个题应该是第二种可能

                              flag{bugku-789-ps-ssdf}

猜你喜欢

转载自blog.csdn.net/changer_WE/article/details/85067139