一次awdplus經歷(網鼎杯線下賽)


開頭

首先談談awdplus吧。個人覺得其實有點像今年的ciscn,其實就是ctf多了一個修題的環節。與awd差別還是挺大的,全程不會接觸靶機,不需要ssh連,所以也不存在什么准備各種牛鬼蛇神的腳本,還是比較輕松的,每輪到了時間,拿到flag了,提交,平台會自動攻擊未成功防御的選手

上圖是其中一道題,攻擊就只需要打自己的網站,比如你通過未過濾的命令執行點獲得了flag,提交,即代表攻擊成功。然后防御需要你寫過濾后的源碼,與update.sh一起打包成.tar.gz格式的文件,update.sh 里寫mv -f 文件名 目標路徑,上傳到ftp后,在平台上點答題,填入壓縮包文件名,平台會自動用exp打,如果exp打失敗了,即為修補成功

小tricks:這里問了幾個師傅,比如在今年一道目錄穿越的題上,我是通過過濾..的方法修補成功,但也有師傅直接把小寫的flag,改成大寫的flag,exp同樣打失敗,判斷為修補成功,所以exp打的方式可能比較單一苛刻,很多方法都可以起到防御的作用。

web_AliceWebsite

這題比較簡單,拿到源碼后直接丟到D盾里

可以看到直接爆出,找到對應文件路徑,確定位置,源碼如下:

<?php
        $action = (isset($_GET['action']) ? $_GET['action'] : 'home.php');
        if (file_exists($action)) {
            include $action;
        } else {
            echo "File not found!";
        }
		
            ?>

可以看到這里用戶傳入的action並沒有任何的過濾,直接可以目錄穿越

payload: ?action=../../../../flag

防御:

<?php
        $action = (isset($_GET['action']) ? $_GET['action'] : 'home.php');
		$deny_ext = array("..","../");
		if (in_array($action, $deny_ext)){
            if (file_exists($action)) {
                include $action;
            } else {
                echo "File not found!";
            }
		}
		
            ?>

這里通過新建一個黑名單,過濾..和../的方法防御成功

FAKA

(源碼和復現buu上均有,我就懶得放源碼了)

somd5大法好,比賽的時候太難了,找到了md5密碼,解不出來,跑也跑不出來,氣個半死

后台就是/admin,進入后台后,發現|備份管理|添加備份|下載處同樣是目錄穿越,吐槽一下,同一個知識點怎么還考兩次

function downloadBak() {
        $file_name = $_GET['file'];
        $file_dir = $this->config['path'];
        if (!file_exists($file_dir . "/" . $file_name)) { //檢查文件是否存在
            return false;
            exit;
        } else {
            $file = fopen($file_dir . "/" . $file_name, "r"); // 打開文件
            // 輸入文件標簽
            header('Content-Encoding: none');
            header("Content-type: application/octet-stream");
            header("Accept-Ranges: bytes");
            header("Accept-Length: " . filesize($file_dir . "/" . $file_name));
            header('Content-Transfer-Encoding: binary');
            header("Content-Disposition: attachment; filename=" . $file_name);  //以真實文件名提供給瀏覽器下載
            header('Pragma: no-cache');
            header('Expires: 0');
            //輸出文件內容
            echo fread($file, filesize($file_dir . "/" . $file_name));
            fclose($file);
            exit;
        }
    }

防御的話一樣做個黑名單,過濾一下即可

看了師傅們博客還有其他很多思路,這里就不贅述了

太菜了,沒進總決賽,只有這兩道題wp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM