尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CTFshow-Web-RCE任意文件上传

CTFshow-Web-RCE任意文件上传
📅 发布时间:2026/6/18 19:06:25

一、靶场: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下必须空一行,这是数据包规定的格式

相关新闻

  • 二零二五年十二月鲜花代运营服务商综合评测与排行:五家服务商深度对比与选择指南
  • 【IEEE出版 | EI检索】第六届机械自动化与智能制造国际学术会议(MAIM 2025)
  • 二零二五年十二月压缩机储液器厂家推荐榜:五家优质企业综合对比与选购指南

最新新闻

  • pandas多维聚合实战:工业级数据处理的5大核心范式
  • 郑州不想装成“网红风”千篇一律?这几家凭原创设计上榜 - GrowthUME
  • 2026海口包包回收价格差距大,内行教你看懂行情 - 奢品小当家
  • 2026成都黄金出手干货:实时金价参考、称重核验、无损检测全教程 - 奢侈品回收评测
  • 163MusicLyrics:网易云QQ音乐歌词快速获取完整解决方案
  • GitHub Desktop中文汉化终极指南:5分钟快速上手,告别英文界面困扰

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号