寧波建設(shè)網(wǎng)站價格seo是怎么優(yōu)化推廣的
題目環(huán)境:
好好好,讓找源文件是吧?咱們二話不說直接掃它后臺
使用dirsearch工具掃描網(wǎng)站后臺(博主有這個工具的壓縮包,可以私聊我領(lǐng)取)python dirsearch.py -u http://0d418151-ebaf-4f26-86b2-5363ed16530f.node4.buuoj.cn:81/
探測存活文件
不要一驚一乍哦,0B內(nèi)存這是假的flag.php文件
探測出存活文件index.php.bak
bak文件后綴是備份文件
下載index.php.bak文件
回車即可下載
使用記事本或者PHP編譯器等工具打開即可
<?phpinclude_once "flag.php";if(isset($_GET['key'])) {$key = $_GET['key'];if(!is_numeric($key)) {exit("Just num!");}$key = intval($key);$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";if($key == $str) {echo $flag;}
}
else {echo "Try to find out source file!";
}
PHP代碼審計
包含flag.php文件
通過GET方式傳參的參數(shù)key
_is_numeric()函數(shù)_用于檢測變量是否為數(shù)字或數(shù)字字符串,那么加上感嘆號就是如果不是數(shù)字或數(shù)字字符串就輸出Just num!并退出
intval() 函數(shù)用于獲取變量的整數(shù)值
if語句如果key變量與str變量相等則返回TRUE并輸出flag
else語句如果以上條件全部都不符合條件,則輸出Try to find out source file!
進(jìn)一步分析
看完代碼審計是不是很慌,我猜你已經(jīng)注意到了“key變量和str變量的值是不可能相等的!”
哪怎么搞呢?
別急,作者還給了我們一個驚喜!
“==”PHP弱比較邏輯運算符
PHP弱比較呢只是要求運算符兩邊的數(shù)據(jù)類型必須一致并沒有要求兩個變量的值一定要相等
str變量是字符串,同時要求key變量必須是數(shù)字,并且str字符串里面存在123,所以key=123即可獲得flag
構(gòu)造payload:?key=123
上傳payload:
得到flag:flag{b7a1c0e0-3a3a-4267-999d-ad788f286d41}