pwn02 0基础第三弹 ret2libc

admin 2022年1月5日23:11:40评论75 views字数 583阅读1分56秒阅读模式

>

>

pwn02 0基础第三弹 ret2libc

admin

对应平台pwn07,有溢出,无system和/bin/sh字符串

流程如下

  • 溢出到任意返回地址
  • 执行一个特殊的位置 pop rdi;ret
  • 借用 pop rdi;指令,成功将栈顶的 elf.got['puts']地址(got表偏移地址)赋值给rdi,然后返回
  • 继续执行 elf.plt['puts'] 指令,参数用rdi寄存器里面的值,也就是puts的got表偏移地址
  • 输出结果后,取后6位,按8位左对齐,不够位的补\x00,得到puts的全局偏移地址
  • 通过后两位c0在 https://libc.blukat.me/ 找到对应的libc.so版本,下载下来,本地包含
  • 远程泄露的puts地址-本地获得puts的符号表偏移量(其实就是远程的libc.so中的puts偏移量,上一步查出来下载了),就是远程的libc的基址
  • 因为程序只执行了一次的gets,需要再重新执行一次,让我再输入一个gets的机会
  • 这里溢出顺序就是 填充字符+8字节覆盖rsp+借用代码+参数(puts的全局偏移)+puts调用(得到libc远程地址)+main调用地址
  • 重新溢出 填充字符+8字节覆盖rsp+返回对齐地址(ret)+借用代码+(libc基地址+/bin/sh偏移)+(libc基地址+system偏移)
  • 结果相当于执行了system("/bin/sh"),获得shell
    pwn02 0基础第三弹 ret2libc
    pwn02 0基础第三弹 ret2libc

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:11:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   pwn02 0基础第三弹 ret2libchttp://cn-sec.com/archives/720053.html

发表评论

匿名网友 填写信息