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}