对应平台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
月饼杯杂项附加视频WP【出题人视角】 [videos href=http://1257200238.vod2.myqcloud.com/cbed49a0vodcq1257200238/25ee0f775285890808098643591/5rQtg9xMxw…
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论