實驗吧 web 你真的會PHP嗎? php審計

2021-09-13 09:47:33 字數 1177 閱讀 5558

本題相關函式:

響應頭中有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,接下來一...