web373
题目
1 | <?php |
libxml_disable_entity_loader(false);
这一行将禁用libxml实体加载器。这是为了防止XML实体注入攻击,确保不会加载外部实体。设置为false
表示实体加载器没有被禁用。$xmlfile = file_get_contents('php://input');
这一行从php://input
读取HTTP请求的主体部分(通常是POST请求的数据),并将其存储在变量$xmlfile
中。if(isset($xmlfile)){ ... }
这一行检查变量$xmlfile
是否存在。如果存在,表示成功获取了XML数据。$dom = new DOMDocument();
这一行创建了一个新的DOMDocument对象,用于解析XML。$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
这一行使用loadXML
方法加载XML数据到DOMDocument对象中。选项LIBXML_NOENT
和LIBXML_DTDLOAD
用于指定加载XML时的一些行为。LIBXML_NOENT
用于禁用实体扩展,以防止XXE(XML外部实体)攻击,而LIBXML_DTDLOAD
用于允许加载DTD(文档类型定义)。$creds = simplexml_import_dom($dom);
这一行将DOMDocument对象转换为SimpleXMLElement对象,以便更容易地访问XML数据。$ctfshow = $creds->ctfshow;
这一行尝试从XML数据中提取名为”ctfshow”的元素的值,并将其存储在变量$ctfshow
中。
题解
burpsuite发包,不能用hackbar
利用hackbar抓包修改为POST请求,在原始的包后换行写下payload
payload:
1 | <?xml version="1.0"?> |
web374
题目
1 | <?php |
区别在于没有回显,要把读取到的内容也就是flag传到远程服务器查看
题解
- 无回显的文件读取,需要进行外带
利用有公网的服务器创建站点
新建三个文件:xxe.xml,x.php,flag.txt
修改内容
1 | #xxe.xml |
1 | #x.php |
然后利用burpsuite发包
payload:
1 | <!DOCTYPE ANY[ |
web375
题目
1 | <?php |
题解
同web374
web376
题目
1 | <?php |
题解
同web374
web377
题目
1 | <?php |
题解
bp之前同374
添加了一些过滤,将payload进行utf-16编码利用python传参
1 | import requests |
web378
题目
题解
抓包后发现回显是xml
传参payload
1 | <?xml version="1.0"?> |