How to use nc
Fri Aug 30 2024
# How to Use nc
请不要再使用你的浏览器来访问 CTF 题目,除非是 Web 方向或者题目有特殊说明!
如果你在做 CTF 题目的时候被重定向到了这里,请好好看完本文,再决定你的下一步操作。
## 什么是nc
?为什么要用nc
?浏览器怎么你了?
TL;DR: nc 是一个用来连接题目的工具,这些题目只能用 nc 或者其他类似的工具连接,浏览器打不开,不是环境坏了
nc
/ncat
是一个命令行网络工具1,允许你通过 TCP 协议或者 UDP 协议连接到远程服务器 Socket,并进行数据传输。浏览器使用的是 HTTP/HTTPS 协议。HTTP/HTTPS 协议构建于 TCP 协议之上,而很多题目(Pwn / Misc)方向的题目使用的是原始的 TCP 协议,并没有进一步实现 HTTP 协议的内容,所以用浏览器访问会显示一个服务器发送了无效的响应,此时的你可能以为环境出了问题,于是开始联系出题人,但是实际上环境没有问题,有问题的是你的工具!
你可能还会看到netcat
这个名字,实际上nc
就是netcat
,而ncat
是对nc
的一个重写,两者间的行为差别可以忽略不计。(但无论何时,当你遇到问题求助他人时,请务必说明你使用的是哪个版本以及具体版本号)
当然,你如果不想使用命令行工具,你也可以使用pwntools
之类的工具来访问此类题目,本文不进行详细说明。
## 如何安装nc
?
大多数 Linux 发行版和 macOS 一般自带nc
工具,可以在终端输入nc
来判断是否已经安装nc
工具,如果能正确显示nc
的使用帮助,则说明已经正确安装,可以快进到下一部分。本文只说明如何在 Linux/Windows 下安装并使用nc
,其他操作系统的安装方式请自行搜索。
本文不解答任何因为网络原因导致的安装失败问题,请自行搜索使用镜像站或者其他手段!
### Linux / WSL
不同 Linux 发行版使用不同的包管理器,也因此有不同的包名,和不同的安装命令。本部分仅考虑本文发布时最新LTS或者当前最新稳定版本(对于滚动发行版)
#### 使用系统包管理器
对于使用 APT (Debian / Ubuntu / Kali Linux) 作为包管理器的发行版,请在终端中输入:
对于使用 DNF (Fedora) 作为包管理器的发行版,请在终端中输入:
对于使用 Pacman (Arch Linux / Black Arch),请在终端中输入:
### Windows
Windows 上的ncat
与nmap
一起发行,因此你需要安装nmap
工具。进入nmap下载地址,找到Latest stable release self-installer: nmap-x.xx-setup.exe,下载并安装,即可在命令行中使用。注意:Windows 下的nc
命令为ncat
## 如何使用nc
?
以下演示以 Linux 为主,Windows 用户需要把nc
替换为ncat
。
命令的基本格式是nc [options] <hostname> <port>
,其中<hostname>
是要访问的主机名,<port>
为端口号。如果你正在使用wsrx
进行连接,那么主机名就是wsrx
运行的主机名或者ip地址,通常是localhost
。端口号可以在平台上或者wsrx
的界面上找到。
示例:在平台上打开容器,使用本机的wsrx
进行连接,wsrx
报告端口号为10721
,那么你可以使用以下命令来连接到题目:
示例2:使用虚拟机,在主机上启动wsrx
,wsrx
报告端口号为10722
,通过ipconfig /all
或者ip a
查得主机ip为10.0.0.1
,在虚拟机内进行连接,可以使用以下命令