Hallo *Markus.
Ich verwende Gentoo Linux, und das Zielprogramm war eigentlich das von mir gepostete. Darüberhinaus bin ich jetzt fast sicher, dass dieses sporadische Funktionieren normal ist. Der Autor schreibt nämlich folgendes:
"[...] um das Programm hoffentlich dazu zu verleiten, den injizierten Shellcode beim Absturz auszuführen."
Wie gesagt, das haengt massgeblich von der Methode ab, mit der du den Shellcode zu injizieren versuchst. Die beiden Artikel, die ich im ersten Posting erwaehnte beschreiben z.B. zwei gaenzlich unterschiedliche Moeglichkeiten.
Egal welche Methode du nun verwendest, es lohnt sich auf alle Faelle, sich mit GNU Debug (gdb) zu beschaeftigen, um dem Programm beim Abarbeiten der Befehle "ueber die Schulter schauen" zu koennen. So findest du sicher auch selber heraus, was das Problem ist.
Meine zweite Frage wäre die Erklärung des HEX-Codes vor /bin/sh. Ich würde gerne wissen, welche Anweisungen für den PC die paar Hex-Zahlen vor /bin/sh beinhalten.
Da du das Binary ja hast: Fuer so etwas eignen sich Disassembler hervorragend.
Nein, so habe ich das nicht gemeint. Diese 46 Hexzahlen werden tatsächlich so in ein Array in dem C-Programm, also dem Exploit, eingetragen, und dem anderen von mir geposteten C-Programm untergejubelt. Ich habe den offenen Quellcode vor mir, nur wollte ich diese Anweisungen verstehen.
Ist schon klar. Diese "Hexzahlen" sind Maschinencode, der nachher (vermutlich) auf dem Stack landet. Du kannst diese Opcodes mit einem Disassembler als besser lesbare Mnemonics darstellen lassen, falls du sie nicht "von Hand" uebersetzen willst. Auswendig kennen die fuer moderne Prozessoren vermutlich nur die absoluten Freaks. ;-)
Oder meintest du mit "offener Quellcode" das Assembler-Listing des Shellcodes und willst nun lediglich wissen, was dieser die ganzen "push eax" usw. machen?