pwn02 0基础第三弹 ret2libc

  • pwn02 0基础第三弹 ret2libc已关闭评论
  • 1 views
  • A+
所属分类:CTF专场

对应平台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
    pwn02 0基础第三弹 ret2libc

相关推荐: 月饼杯杂项附加视频WP【出题人视角】

月饼杯杂项附加视频WP【出题人视角】 [videos href=http://1257200238.vod2.myqcloud.com/cbed49a0vodcq1257200238/25ee0f775285890808098643591/5rQtg9xMxw…