開頭
首先談談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