1. 程式人生 > 其它 >BUUCTF [ACTF2020 新生賽]BackupFile

BUUCTF [ACTF2020 新生賽]BackupFile

  1. BackupFile,開啟網頁啥也沒有,用dirsearch掃描目錄
  2. 常見的備份檔案字尾名有 .git .svn .swp .~ .bak .bash_history
  3. 得到一個這個檔案
  4. 訪問 下載下來得到
<?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!";
}
  1. GET型別,先要經過 is_numeric($key) 審查,然後再經過 intval($key) 轉換
    is_numeric():檢測變數是否為數字或數字字串,返回true或者false
    intval():獲取變數的整數值
  2. 關鍵:$key == $str
    php中有兩種比較的符號 == 與 ===
<?php
$a = $b ;
$a===$b ;
?>

=== 在進行比較的時候,會先判斷兩種字串的型別是否相等,再比較
== 在進行比較的時候,會先將字串型別轉化成相同,再比較
如果比較一個數字和字串或者比較涉及到數字內容的字串,則字串會被轉換成數值並且比較按照數值來進行
同時弱比較:如果比較一個數字和字串或者比較涉及到數字內容的字串,則字串會被轉換成數值並且比較按照數值來進行,在比較時該字串的開始部分決定了它的值,如果該字串以合法的數值開始,則使用該數值,否則其值為0。所以直接傳入key=123就行


7. 構造payload
http://5281fc14-7a98-4b08-8e21-c602c847e530.node4.buuoj.cn:81/?key=123
8. 得到flag
flag{ef6d9f77-937a-4f9b-9ce8-92a039f12f22}




原文連結:
https://blog.csdn.net/weixin_45674567/article/details/106412484
https://www.cnblogs.com/Mrsm1th/p/6745532.html