最近在BugkuCTF平台刷題,遇到‘矛盾’http://120.24.86.145:8002/get/index1.php,感覺蠻有意思的,記錄下思路
目標代碼如下:
$num=$_GET['num']; if(!is_numeric($num)) { echo $num; if($num==1) echo 'flag{**********}'; }
想要得到flag變量num必須是1,但是上一層判斷語句使用is_numeric判斷變量num不能是數字,這是不是很矛盾
下面看下解題思路:
主要是關注獲得flag的那個條件判斷語句,怎么才能讓這個變量不是1,而讓條件成立呢
由於變量num是直接接入條件的,故可以構建多條件,來成立判斷
eg:if(1=1|1=1) 條件成立
payload:1=1|1,且能通過上層is_numeric函數的判斷