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

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

2022-6-30 15:52
13062

这道题就是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中了,我们构造⼀下

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

图片描述

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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//