Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

Zu einer bestimmten Adresse springen, die aber " enthält

Diskussion: Zu einer bestimmten Adresse springen, die aber " enthält im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo, in einem CrackMe soll man zu der folgenden Adresse springen: 00 22 FF 24 In dem CrackMe ist ...

Antwort
Alt 25.11.06, 23:11   #1 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard Zu einer bestimmten Adresse springen, die aber " enthält

Anzeige

Hallo,
in einem CrackMe soll man zu der folgenden Adresse springen: 00 22 FF 24


In dem CrackMe ist dann ein Buffer Overflow, sprich das Programm speichert per strcpy() das 1. Konsolen-Argument in einem (zu kleinem) Char-Array ab. Die oben angegeben Adresse soll dann die Rücksprungadresse der Funktiom mit dem Overflow überschreiben, so dass das Programm nicht mehr im Hauptthread weiterläuft, sondern zu der Adresse springt und die dort hinterlegte Funktion ausführt.

Eigentlich gar nicht so schwer, dachte ich, allerdings habe ich ein Problem mit der 22 in der Adresse, denn dies stellt das Zeichen " dar und es per \ zu maskieren klappt irgendwie nicht.

Ich habe dazu folgendes C Programm geschrieben:

Code:
int main() {
    char cmd[255];
    char *ziel = "crackme.exe";
    char *buffer = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"; //Ein paar NOPs zum füllen
    char *adresse = "\x24\xff\x22";
    

    strcpy(cmd, ziel);
    strcat(cmd, " \""); //1. Agrument steht zwischen "..."
    strcat(cmd, buffer); //Zeichen damit der Speicher überläuft
    strcat(cmd, adresse); //Jetzt die Adresse wohin gesprungen werden soll
    strcat(cmd "\""); //Das Abschließende "

    system(cmd);
}

So wenn ich das Programm jetzt starte, bekomme ich die Meldung, dass zu der Adresse "0002d961" nicht gesprungen werden kann.


Ändere ich die 22 in der Adresse in z.B. eine 28, so erhalte ich die Meldung, dass die Adresse "0028ff24" nicht vorhanden ist, ist ja auch logisch, da diese nicht in der Exe definiert ist, aber wie man sieht, möchte er zu der angegeben Adresse springen.

So, jetzt dachte ich mir, ich maskiere die 22 in der Adresse mittels Backslash (Nr. 5c), und habe dann folgende Adresse
char *adresse = "\x24\xff\x5c\x22";

Allerdings erhalte ich dann weiterhin, dass "0002d961" nicht vorhanden ist.


Kann mir evt. jmd. helfen, wie ich per Konsole die \x22 übergebe, so dass diese in die Rücksprungadresse übernommen wird, oder ist mein vorhaben vergebens?
Elderan ist offline   Mit Zitat antworten
Alt 26.11.06, 00:22   #2 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

soweit ich weiß (und gerade mit 'printf (GetCommandLine)' überprüft habe - es wurde über CMD ein Teststring 'hallo"test' fehlerfrei übergeben) sollte das System nichts an dem übergebenen String ändern - für die "Extrahierung" der Argumente ist das Programm selbst verantwortlich.

Mir fällt da noch der Umweg über einen Return zum Buffer selbst. Da hat man ganze 12 Bytes für:
Code:
 

90
90
B8 80E45F04                               MOV EAX,45FE480
C1E8 05                                   SHR EAX,5   ;Ergebnis: 22 FF 24
FFE0                               JMP EAX
Das Problem wäre nur dass die Stackadresse auf unterschiedlichen System unterschiedlich sein könnten. Das könnte man dann auf Wunsch über einen "Local Exploit Generator" lösen .
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 26.11.06, 13:14   #3 (permalink)
Moderator
Themenstarter
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
oO der Code oben funktioniert soweit einwandfrei, also er springt zu der Adresse, allerdings ist in der Routine hinter der Adresse noch eine Codezeile drin, die den genannten Fehler verursacht.
Da ich aber per Ollydebug nicht immer überprüfen wollte, wohin gesprungen wird, habe ich mich auf die Debug Meldung verlassen.

Naja war wohl gestern Abend etwas spät...
Elderan ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » Zu einer bestimmten Adresse springen, die aber " enthält
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
iTunes - Alle Videos lassen nach einer Änderung der E-Mail-Adresse nicht mehr abspielen aronsoft Applikationen 2 09.11.09 16:59
IP adresse im LAN, aber von wem? nik (In)security allgemein 27 20.11.06 12:35
adresse zu einer tel.-nummer finden?? RedEagle Off topic-Zone 2 27.06.05 21:44
Sensible Daten einer Person rausfinden -->Datenschutz umgehen (Adresse, BLZ, Mädchenname etc.) KingZ (In)security allgemein 8 17.08.04 17:35


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61