
这题主要是要知道又git源码泄露这回事,不然根本做不了



甚至连提示都找不到,开始目录扫描,但是只是扫描到了index.php
我自己根据提示,手动试了一下flag.php,发现可以访问,但是没有回显。
所以目前就知道两个文件,index.php,flag.php
看了题解才知道还有git源码泄露
用GitHack工具
GitHack.py http://aa87a9df-3c8a-4a79-a40e-64157d2a4261.node5.buuoj.cn:81/.git/直接得到网站index.php源码
打开看看
开始解读index源码:
一共四层if语句,都满足才可以到eval()函数,执行拿flag的命令:
第一层:
很简单,exp参数要有值
第二层:!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])
这个还算好看的
起始的'/'代表匹配开始
data:\/\/ --> data://
filter:\/\/ --> filter://
php:\/\/ --> php://
phar:\/\// --> phar://
/i:不区分大小写
正则的完整结构长这样:
/ 正则内容 / 修饰符
拆解开就是:
/ data:\/\/|filter:\/\/|php:\/\/|phar:\/\/ /i