BugkuCTF web:web基礎$_POST; 矛盾
阿新 • • 發佈:2018-12-20
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}