趁着期中考,复习累了做几道ctf玩玩,只做出来3道web。感谢师傅们出的题!先放上简单的wp版本,一些细节后续再更新吧。
Task
|
|
Solution
源码泄露
根据题目信息,用了IDE,比如phpstrom,以前做百度杯时碰到过。尝试访问:
发现源码包:xdcms2333.zip。下载下来进行审计。
基本流程梳理
regisrer.php
|
|
login.php
|
|
member.php
|
|
php的preg_match
在code部分填入超长的字符串,并且符合preg_match匹配的模式。则在register.php在preg_match时导致超时php脚本停止,字符串guest
没有被插入成功。之后在login.php中登陆用户跳转至member.php后,下述代码将会跳过:
并在接下来的判断中,进入else分支:
上次微信崩溃,好像也是正则匹配搞得鬼嘛。二者原理不同,不过应该还是有某种神似的。
php的is_file和readfile
在进入成功后,需要提供file参数来读取文件。需要绕过is_file,考虑配合php伪协议。
isfile判断为假,而readfile利用伪协议读取到config.php文件
得到config.php源码:
flag:
小结
- PHP的preg_match
- isfile、readfile