本題相關函式:
響應頭中有6c525af4059b4fe7d8c33a.txt,訪問得原始碼:
<?php
$info = "";
$req = ;
$flag="*********x";
ini_set("display_error", false);
error_reporting(0);
if(!isset($_post['number']))
foreach([$_post] as $global_var)
} function is_palindrome_number($number)
$i++;
$j--;
} return true;
} if(is_numeric($_request['number']))elseif($req['number']!=strval(intval($req['number'])))elseelse is a palindrome number!";
}else
}}echo $info;
首先,我們上傳的資料作為鍵值數值儲存在req中。
仔細分析原始碼,發現要想列印出flag,需要做的有這幾項:
1)不能上傳數值型別的資料
2) 上傳的數強制轉換成整數的字串形式和其自身相等
3) 不能是回文串但反轉後的整數值相等
url編碼在處理中是被忽略的,可以利用這個特點繞過。
結合前輩們的wp,有這兩種方法:
1)post:number=2147483647%00
2147483647是php整數的最大值,反轉後的值會溢位,然而比最大值大的值會設為最大值,這樣反轉後就相等了,而且也不是回文串。
2)post:number=0e-0%00
這個利用了0和自身相等,也可傳遞number=0e+0%00。
實驗吧 你真的會PHP嗎?writeup
首先fiddler抓包,在response header中發現hint 6c525af4059b4fe7d8c33a.txt,開啟後找到index.php原始碼 info req flag x ini set display error false error reporting 0 if isse...
實驗吧 你真的懂php
說實話 我真的不懂。看了眾大佬的部落格,終於搞懂了,利用intval 溢位時會返回最大值,以及 00被過濾。寫乙個驗證如下 info input urldecode 2147483647 20 value1 intval input temp strrev input value2 intval t...
你真的會暴力嗎
problem 你真的會暴力嗎 description 給你乙個長度為n的數列,問你這個數列是不是乙個完美數列。乙個數列是完美數列當且僅當不存在兩個不相交的子串行,元素的數值和相同。input 第一行乙個整數t t 50 表示一共有t組。每組第一行乙個整數n n 1e4 表示數列的長度為n,接下來一...