1. 程式人生 > 實用技巧 >[ACTF2020 新生賽]BackupFile

[ACTF2020 新生賽]BackupFile

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