| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Eigener "kleiner" Exploit geht nicht - welcher Fehler? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo. Ich wollte mir für ein C Programm einen "Exploit" ( naja soweit man das als Exploit bezeichnen kann ...
![]() |
| | #1 (permalink) |
| Registriert seit: 11.12.03 ![]() Likes: 0 | Anzeige Hallo. Ich wollte mir für ein C Programm einen "Exploit" ( naja soweit man das als Exploit bezeichnen kann ) schreiben, der über einen Buffer Overflow die Rücksprungadresse im Stack ändert und so einen Teil des Programms überspringt. Hier der Code: das normale C Programm: Code: # include <stdio.h>
# include <string.h>
int main ()
{
char buffer[12];
gets (buffer);
puts ("falsch");
puts ("richtig");
} Code: (gdb) disass main Dump of assembler code for function main: 0x0804836c <main+0>: push %ebp 0x0804836d <main+1>: mov %esp,%ebp 0x0804836f <main+3>: sub $0x18,%esp 0x08048372 <main+6>: and $0xfffffff0,%esp 0x08048375 <main+9>: mov $0x0,%eax 0x0804837a <main+14>: sub %eax,%esp 0x0804837c <main+16>: sub $0xc,%esp 0x0804837f <main+19>: lea 0xffffffe8(%ebp),%eax 0x08048382 <main+22>: push %eax 0x08048383 <main+23>: call 0x8048278 0x08048388 <main+28>: add $0x10,%esp 0x0804838b <main+31>: sub $0xc,%esp 0x0804838e <main+34>: push $0x80484c8 0x08048393 <main+39>: call 0x8048288 0x08048398 <main+44>: add $0x10,%esp 0x0804839b <main+47>: sub $0xc,%esp 0x0804839e <main+50>: push $0x80484cf 0x080483a3 <main+55>: call 0x8048288 0x080483a8 <main+60>: add $0x10,%esp 0x080483ab <main+63>: leave 0x080483ac <main+64>: ret 0x080483ad <main+65>: nop 0x080483ae <main+66>: nop 0x080483af <main+67>: nop End of assembler dump. Code: # include <stdio.h>
# include <string.h>
int main ()
{
printf ("123456789abc");
printf ("1234");
printf (" %c%c%c%c", 0xa8, 0x83, 0x04, 0x08);
fflush (stdout);
return 0;
} Was ich will: Die Adresse im IP soll durch das Überladen des Buffers geändert werden, so das nach dem Einlesen des buffers das puts ("falsch"); übersprungen wird und nur noch -richig- ausgegeben wird. Zunächst wird der buffer der ja 12 Bytes groß ist mit 123456789abc überschrieben, dann wird mit 1234 der Stack Pointer überflutet ( 4 Byte groß - oder?? ) und dann die Adresse wo das Prog weitermachen soll in den IP geschrieben. Code: bleedingsoul@linux:~> ./expprog1.out | ./prog1.out falsch richtig Wo liegt der Fehler? Falsche Adresse? Falsche Stackgrößen? Oder bin ich ganz auf dem Holzweg und es funktioniert so überhaupt nicht? Wie muss ich den Exploit schreiben, damit die Manipulation funktioniert? Ich wäre sehr dankbar, wenn mir jemand auf helfen könnte. Als nächsten Schritt, wenn es funktioniert, habe ich vor den Buffer im Programm vergrößern um darin einen Shellcode unterbringen zu können, damit durch den Exploit auch eine Shell gestartet wird. Danke im vorraus. mfg BleedingSoul |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Kleiner Fehler im Programm zum Filtern von Eintraegen[C++][geloest] | sw33tlull4by | Code Kitchen | 4 | 14.04.09 12:31 |
| Kleiner Fehler im DropDown Menü von "(Web-) Design und webbasierte Sprachen" | pacman | Hackerboard.de-Feedback | 5 | 24.07.05 12:10 |
| Welcher Provider ist gut und welcher nicht !? | HighTower | (In)security allgemein | 13 | 28.03.05 18:36 |
| Mein C - Exploit für einen Socket Server geht nicht | Bleeding666 | Code Kitchen | 0 | 10.04.04 00:19 |
| Kleiner Fehler in der Board-Software?! | Rushjo | Hackerboard.de-Feedback | 5 | 26.01.02 01:28 |