美文网首页
ROPemporium

ROPemporium

作者: fantasy_learner | 来源:发表于2018-12-15 11:45 被阅读0次

    ret2win

    • 填充到ret地址 修改为 ret2win 即可
    • 32exp
    • 64exp

    split

    • elf文件的 plt 表中有system函数,并且文件内有 "/bin/cat flag.txt",可以直接调用,
    • 溢出后调用 system("/bin/cat flag.txt")即可
    • 32位 传参 (栈传参): func_addr , ret_addr , argv_1_addr
    • 64位 传参 (寄存器传参): 传参顺序 从左至右 依次是 rdi,rsi,rdx,rcx,r8,r9
    • 32exp
    • 64exp

    callme

    • 分析 elf 和 .so 得到 顺序执行 callme_one , callme_two , callme_three 即可得到flag
    • 考点 : 多次执行函数的堆栈平衡(32位) 和 传参
    • 32exp
    • 64exp

    pivot

    • 分析:在溢出长度较短时 劫持栈指针,从而执行getshell

    • 流程 : 控制 esp后 执行 foothold_function , 将 got表的地址绑定上(lazy binding),pop eax , mov eax,[eax] 得到 foothold_function 地址,pop ebx , add eax ,ebx ;配合 offset 计算得出目标函数 ret2win的地址,然后用call eax 到达 ret2win

    • 信息:1 . payload 输入点 : pwnme 函数中的第一个输入点, 并且在此之前给出了输入点的地址

    • 32exp

    • 64exp

    badchars

    • 分析: 执行过程中对输入进行过滤,在没有找到绕过过滤直接执行输入的情况下, leak了函数的地址,进行libcsearch,直接使用libc中的/bin/sh ,执行system("/bin/sh");

    • 流程 :第一次使用栈溢出 调用 puts 输出 fgets 函数got表地址,并返回 pwnme 函数,然后在脚本中接受返回的函数地址,并进行libcsearch和计算。第二次栈溢出执行system("/bin/sh")

    • 32exp

    • 64exp

    fluff

    • 分析 : 栈溢出 , 有输出函数puts 和 libc函数 system
    • 流程 :
        • 1 . 使用 puts leak出libc地址后 , 获取 '/bin/sh'地址 , 然后重新返回漏洞函数 ,执行 system("/bin/sh\x00") | 2 次利用栈溢出
          1. 使用 puts leak出 stdin的值 , 使用 fgets输入 /bin/sh , 然后 使用system("/bin/bin") . | 3 次 利用栈溢出

    32exp
    64exp

    相关文章

      网友评论

          本文标题:ROPemporium

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