1. 程式人生 > >BugkuCTF web:web基礎$_POST; 矛盾

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}