题目思路
- 进入题目后,发现www.zip的文件泄露,容易发现是onethink cms,用thinkphp框架写的。
搜索后可发现已知漏洞:
https://bbs.ichunqiu.com/thread-4918-1-1.html
发现该cms存在固定缓存文件名2bb202459c30a1628513f40ab22fa01a.php,观察www.zip下面的源代码可以发现对文件名又进行了一次md5
- 一种做法可以参照一叶飘零师傅的博客
另外一种做法是,扫描目录得到www.zip下载源码,本地搭建起来环境后得到目录`/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.ph` 参考郁离歌的做法
反思:我当时做时,搜到了以前题目的文章1文章2按照该解题思路,没有操作成,显示用户名受到限制,以及在操作抓包时没有进行url-encode,没有进行本地搭建以及相关代码的审计(比如用户名限制)。
关键点
- 缓存文件路径
- 用户注册成功并登陆成功(我试了很多都是用户收到限制或者不存在,姿势不对…)
- 注册登陆必须每次抓包url解码后再发包回去
- 每次注册和登陆在发包的时候URL-encode 必须勾选上再提交,否则会把换行符的url-encode当成字符串来处理。登陆的时候也需要抓包,在用户名前面加上换行符的URL-encode,且勾选上URL-encode.
payload
1 | /Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php?X=system(‘cat /tmp/flag’); |