当前位置: 首页 > news >正文

CTFshow-Web-RCE任意文件上传

一、靶场:ctfshow web红包题第二弹
二、解题步骤:
步骤一:打开靶场,发现和web12的界面一样,打开源码看看,依然存在 ?cmd= 的提示

image1

image2

步骤二:这里按照web12的方法直接查看当前文件的源码,可以看到源码和web12相比复杂了许多,后面进行代码审计

image3

步骤三:代码审计(主要是看php代码)

<?phpif(isset($_GET['cmd'])){$cmd=$_GET['cmd'];highlight_file(__FILE__);if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){die("cerror");}if(preg_match("/|||||||||||||||||||||/",$cmd)){die("serror");}eval($cmd);}?>

通过代码审计可以得到以下结论:

1、$cmd=$_GET['cmd']; 这是rce的根源,可以利用这个进行代码执行

2、可以看到两个判断语句,要求cmd不能含有除了p以外的大小写字母和数字,且不能含有特殊字符:$~!@#%^&等等。可以使用的有:p ` ? / + < > =

解题方法:

通过可用的字符构造cmd=?><?=`.+/??p/p?p??????`,由eval($cmd)来运行临时文件

构造原理:

1、<?= $cmd ?> 等于 <?php echo($cmd) ?>

在php中,<? ?>称为短标签,<?php ?>称为长标签。修改PHP.ini文件配置 short_open_tag = On 才可使用短标签。php5.4.0以后, <?= 总是可代替 <? echo。

例:以下代码在php7.4环境下运行,结果均为2021。

<?php echo(date('Y')) ?><?php eval("echo(date('Y'));") ?><?= date('Y'); ?><?php eval("?><?= date('Y');") ?>

2、反引号``(键盘Tab键上面那个键)

在php中反引号的作用是命令替换,将其中的字符串当成shell命令执行,返回命令的执行结果。反引号包括的字符串必须是能执行的shell命令,否则会出错。如下语句可得系统日期:<?= `date` ?>

3、点 .

点命令等于source命令,用来读取并执行文件内容。

source /home/user/bash 等同于 . /home/user/bash

image4

ls指令写入了文件中,使用 . 文件名 就读取并执行了文件内容

4、加号 +

URL编码中空格为%20,+表示为%2B,=为3D%。然而url中+也可以表示空格,要表示+号必须得用%2B。

5、/??p/p?p??????

5.1:临时文件夹目录

php上传文件后会将文件存储在临时文件夹,然后用move_uploaded_file() 函数将上传的文件移动到新位置;

临时文件夹可通过php.ini的upload_tmp_dir 指定,默认是/tmp目录。

5.2:临时文件命名规则

默认为 php+4或者6位随机数字和大小写字母,在windows下有tmp后缀,linux没有;

比如windows下:phpXXXXXX.tmp linux下:phpXXXXXX。

6、通配符

问号?代表一个任意字符,通配符/??p/p?p??????匹配/tmp/phpxxxxxx

7、第一个 ?> 用于拼接前面的 <? ,后面的那个 <? 用于拼接后面结尾的 ?>

步骤四:抓包,改包bp抓包post先上传一个内容为 ls 的文件,然后执行,看根目录下有些什么文件,发现有一个flag.txt

image5

步骤五:再次上传文件,读取flag.txt的内容

image6

三、注释
数据包添加内容详解:

Content-Type:

Content-Type有两个值:

①application/x-www-form-urlencoded(默认值) :上传键值对

②multipart/form-data:上传文件

boundary为边界分隔符:

文件开始标记:-----------------------------10242300956292313528205888

文件结束标记:-----------------------------10242300956292313528205888--

其中10242300956292313528205888是浏览器随机生成的,只要足够复杂就可以。

Content-Length下必须空一行,这是数据包规定的格式

http://www.jsqmd.com/news/59112/

相关文章:

  • 二零二五年十二月过氧苯甲酰品牌推荐排行榜:基于成分功效与临床数据的综合评测
  • CTFshow-Web-RCE远程代码执行
  • CTFshow-Web-Session验证逻辑漏洞
  • CTFshow-Web-文件上传
  • pbootcms模板做百度推广竞价后打不开
  • CTFshow-Web-源码泄露与MD5绕过
  • 团队项目冲刺--Day3
  • 二零二五年十二月过氧苯甲酰品牌推荐排行榜单:五大品牌综合对比与选购指南
  • 2025年权威分析推荐:河北城普制冷设备有限责任公司的核心竞争力解析
  • MemLabs取证-Pass-03题解
  • 二零二五年十二月鲜花代运营服务商综合评测与排行:五家服务商深度对比与选择指南
  • 2025年深圳股权分割律师权威推荐榜单:子女抚养权律师/继承律师/离婚房产律师团队专业解析
  • 2025年12月鲜花代运营服务商推荐排行榜:五大服务商对比与选择指南
  • 二零二五年十二月压缩机储液器厂家推荐排行榜:五家实力企业深度对比与选购指南
  • 完整教程:概念辨析|工业数字化、工业4.0、智能制造、数字化制造:异同解读与实践路径
  • 【IEEE出版 | EI检索】第六届机械自动化与智能制造国际学术会议(MAIM 2025)
  • 二零二五年十二月压缩机储液器厂家推荐排行榜:五家优质企业深度对比与选购指南
  • 2025年12月电动喷雾器厂家综合对比与推荐排行榜单分析
  • 延庆区农村自建房找谁好?北京市延庆区自建房公司 / 机构深度评测口碑推荐榜
  • 2025年12月电动喷雾器厂家推荐排行:五家优质企业综合对比与选购指南
  • 二零二五年十二月压缩机储液器厂家推荐榜:五家优质企业综合对比与选购指南
  • 2025深圳继承律师权威推荐榜单:离婚房产律师/股权分割律师/婚姻律师及机构精选
  • XSS Labs-Level1题解
  • 杭州办婚礼哪里好榜单:2025杭州一站式婚礼排名出炉
  • XSS Labs-Level2题解
  • XSS Labs-Level3题解
  • Vulnhub-GoldenEye靶场渗透
  • QT智能指针总结
  • 2025重金属水质监测设备厂家有哪些指南:厂家技术亮点解析
  • 想在房山区老家农村盖房子,靠谱的自建房公司口碑推荐。北京市房山区自建房公司 / 机构权威测评推荐排行榜