首页
社区
课程
招聘
[原创]CISCN2022-东北赛区半决赛eztp解题思路
2022-6-30 15:52 12109

[原创]CISCN2022-东北赛区半决赛eztp解题思路

2022-6-30 15:52
12109

这道题就是tp3.x ⽇志包含rce的变种
找到可控点写⼊log然后包含即可
审计源码
在index路由中存在textBox⽅法
图片描述
可以看到这个⽅法能够渲染参数
接着看,在list.html
图片描述
联合刚刚的textBox⼀起来看
textBox有个parse_str函数解析post.query 变量覆盖,⽽ $this->display(T("Home@default/list")); 这⾥渲染了list.html,并且调⽤W⽅法
看渲染完成的php界⾯,这⾥调⽤W⽅法并且参数param是可控的
图片描述
所以我们重点应该放在parse_str()W()
图片描述
跟进R(),这⾥会调⽤call_user_func_array
图片描述
这⾥函数的名字是固定的Home\Widget\queryWidget但是param参数可控就是,通过$this->assign("array",$array);赋值给了array
继续跟进queryWidget
图片描述
可以看到这⾥把array数组⾥的name、tag、 id作为参数去调⽤B⽅法
注意看B
图片描述
注意这⾥跟的时候必须得传name和id参数,不然就进⼊if中了,我们构造⼀下

1
query=name%253d1%2526id%3d1%2526tag%3d1

图片描述
继续跟进exec
可以看到在这⾥,我们可以执⾏任意类的任意⽅法并且参数可控,但是只有⼀个参数。
图片描述
这⾥我们需要了解⼀下thinkphp3.2.3的⽂件包含漏洞,关键点就是File.class.php ⾥的变量覆盖
图片描述
这时候,我们可以利⽤那个⽂件包含漏洞File.class.php中的file.load,可以任意⽂件包含,这时候再配合⽇志写
shell就ok了(⼀定要bp发包)
写⼊shell:
图片描述
getflag:

1
2
query=name%253d\Think\Storage\Driver\File%2526id%3dApplication/Runtime/Logs/Common/22_0
6_18.log%2526tag%3dload

图片描述


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞4
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回