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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值