美文网首页
通用Gadgets

通用Gadgets

作者: BJChangAn | 来源:发表于2017-11-22 13:00 被阅读0次

    在x64下有一些万能的gadgets可以利用,例如__libc_csu_init()这个函数。一般来说,只要程序调用了libc.so,程序都会有这个函数用来对libc进行初始化操作。

    1.执行gad1

    .text:000000000040089A                 pop     rbx  必须为0

    .text:000000000040089B                 pop     rbp  必须为1

    .text:000000000040089C      pop     r12  call!!!!

    .text:000000000040089E

    pop     r13                                        arg3

    .text:00000000004008A0

    pop     r14                                        arg2

    .text:00000000004008A2pop     r15  arg1

    .text:00000000004008A4                 retn  ——> to gad2


    2.再执行gad2

    .text:0000000000400880                 mov     rdx, r13

    .text:0000000000400883                 mov     rsi, r14

    .text:0000000000400886                 mov     edi, r15d

    .text:0000000000400889call    qword ptr [r12+rbx*8] call!!!  (got表地址!!)

    .text:000000000040088D                 add     rbx, 1

    .text:0000000000400891                 cmp     rbx, rbp

    .text:0000000000400894                 jnz     short loc_400880

    .text:0000000000400896                 add     rsp, 8

    .text:000000000040089A                 pop     rbx

    .text:000000000040089B                 pop     rbp

    .text:000000000040089C                 pop     r12

    .text:000000000040089E                 pop     r13

    .text:00000000004008A0                 pop     r14

    .text:00000000004008A2                 pop     r15

    .text:00000000004008A4                 retn ——> 构造一些垫板(7*8=56byte)就返回了

    相关文章

      网友评论

          本文标题:通用Gadgets

          本文链接:https://www.haomeiwen.com/subject/yrmnvxtx.html