| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
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 ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | 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? |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | soweit ich weiß (und gerade mit 'printf (GetCommandLine)' überprüft habe 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
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | 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... |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |