Was sind diese Hex-Codes und wie können sie decodiert / codiert werden?

1640
skub

Ich habe ein gewisses Interesse daran, etwas mehr über einen veröffentlichten Exploit herauszufinden, der einen Root-Benutzer in einem Linux-Computer erstellt. Bevor ich jedoch den Code ausführen kann, möchte ich sicherstellen, dass ich alles verstehe und keine Informationen über die verwendeten Hex-Codes zu finden scheint.

Dies ist der Link zur Quelle des Exploit-Codes: exploitdb.com/exploits/17439

Es ist ein einfaches C-Programm, aber der Wert eines der Zeiger verwendet Code wie folgt:

 "\x6a\x26\x5a\x25\x04\xe3\xb3\x64" "\x04\xc7\x03\x65\x48\xe6\x02\xc3" 

Wie kann ich dies in ASCII decodieren und wie kann ich es erneut codieren?

Ich denke, ich könnte hier völlig abseits stehen und dieser Code sollte eigentlich zur Assembly dekodiert werden, aber ich weiß es nicht wirklich. Was kann ich mit diesem Code tun, um sicherzustellen, dass keine willkürlichen Befehle ausgeführt werden?

Ich bin völlig neu in C, weiß aber genug VB.net/C#/PHP, um gefährlich zu sein.

PS Für diejenigen, die sich Sorgen machen, werde ich dies in einer VM ausführen.

2

3 Antworten auf die Frage

5
JdeBP

Der Datenbankeintrag, auf den Sie verwiesen haben, enthält sowohl das ursprüngliche Assembler-Programm als auch die entsprechenden C-Sprachen, die sich unmittelbar über dem hexadezimierten unformatierten Maschinencode befinden. Es ist SuperH Assembler.

Ja, ich weiß; Die Kommentare, die die Assembly enthalten, sind möglicherweise nicht unbedingt der im Zeiger enthaltene Code. Ich bat um eine Methode (Methode oder Prozess), um den Code zu überprüfen, um sicherzustellen, dass es sich tatsächlich um die oben angegebene Assembly handelt. Und auch eine Methode zum Kodieren von * bis * der entsprechenden Hex-Code-Werte (auf die niemand geantwortet hat). skub vor 12 Jahren 0
Das ist in Ihrer Frage nicht so, wie in der Frage, die überhaupt nichts über die Verifizierung von Maschinencode in Assembler gesagt hat, sondern _did_ fragt nach der Konvertierung in ASCII-Zeichen, weshalb die Antworten der Leute darüber sprechen. Sie haben nichts gefragt, was Sie jetzt fragen. Die Methode zum Codieren von Assembler in Maschinencode wird ** Assembler ** genannt. JdeBP vor 12 Jahren 0
> Was kann ich mit diesem Code tun, um sicherzustellen, dass keine willkürlichen Befehle ausgeführt werden? skub vor 12 Jahren 0
1
Ignacio Vazquez-Abrams

Pythons REPL ist für solche Sachen prima geeignet .

>>> "\x6a\x26\x5a\x25\x04\xe3\xb3\x64" 'j&Z%\x04\xe3\xb3d' >>> "\x04\xc7\x03\x65\x48\xe6\x02\xc3" '\x04\xc7\x03eH\xe6\x02\xc3' 

Also ja, fast alle Versammlungen. Sie benötigen einen Disassembler (oder ein CPU-Datenbuch und viel Geduld), um es lesen zu können.

Dies ist wahrscheinlich der Grund, um das Überlaufgebiet zu stapeln, aber könnten Sie ein grundlegendes Codebeispiel (auch wenn Pseudo-Code) enthalten, wie Python dazu gebracht wird, dies zu analysieren? skub vor 12 Jahren 0
Es erfolgt keine weitere Analyse. Was ich gezeigt habe, ist, was Python darüber weiß. Sie benötigen einen Disassembler (oder ...) von hier aus. Ignacio Vazquez-Abrams vor 12 Jahren 0
Vielleicht möchten Sie dies auf http://codegolf.stackexchange.com/ fragen. Vielleicht können sie Ihnen helfen. Michael K vor 12 Jahren 0
0
Dave Sherohman

Die Decodierung in ASCII wäre nutzlos, da es sich nicht um eine Textzeichenfolge handelt. Die \x0...Bytes werden zur Steuerung von Zeichen im ASCII-Zeichensatz und nicht zu druckbaren Zeichen verwendet.