git源码泄露,命令执行,传递参数闭合strpos函数

CSAW CTF 2016 Quals: mfw

【实验原理】

git源码泄露,命令执行

【实验目的】

了解git源码泄露的处理方法

【实验环境】

Windows

【实验工具】

firefox

【实验步骤】

1.打开题目后,点击About页面,发现网站使用Git、PHP、Bootstrap搭建而成,访问.git,发现存在源码泄露。

2.使用 GitHack ( https://github.com/lijiejie/GitHack )工具,我们可以得到网站的源码。

3.查看源码中的flag.php文件,其中并没有flag,审计index.php文件,关键代码如下

<?phpif (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 niceassert("file_exists('$file')") or die("That file doesn't exist!");?>

4.page没有经过任何过滤和处理,所以可以传递参数闭合strpos函数

5.设置page为'.system("cat ./templates/flag.php").',查看源代码,可获得flag,如图所示

(0)

相关推荐