ROPemporium

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0x01 Start checksec 的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,...
    Nevv阅读 5,633评论 0 2
  • Return-Oriented-Programming(ROP FTW) Author: Saif El-Sher...
    RealSys阅读 8,715评论 0 2
  • 基础知识: vue的生命周期: beforeCreate/created、 beforeMount/mounted...
    Jackson_yee_阅读 2,849评论 0 0
  • MXC,平台手续费100%全返每天分红,7月13日上线交易挖矿 已经手机号验证了 实名要手持加字条,传证的时候比较...
    区块链薅羊毛阅读 1,917评论 0 0
  • 马克·吐温说:跳舞,像没有人看着那样;热恋,像从未受伤一样;唱歌,像无人听着那样;活着,就把人间当天堂。
    桃朵阅读 767评论 0 1