ScreenShot_2026-04-09_182641_144.png

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

ScreenShot_2026-04-11_215555_832.png
ScreenShot_2026-04-11_215602_413.png
ScreenShot_2026-04-11_215609_896.png
甚至连提示都找不到,开始目录扫描,但是只是扫描到了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源码
ScreenShot_2026-04-11_215832_543.png
打开看看
ScreenShot_2026-04-11_220024_223.png

开始解读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