首页
社区
课程
招聘
[原创]Pwn-WereWolf
发表于: 2018-1-16 16:05 7894

[原创]Pwn-WereWolf

2018-1-16 16:05
7894

宣传一下自己的blog:
http://tacxingxing.com/2018/01/10/icq2018christmaspwnwerewolf/
希望大佬们轻喷。

题目地址:WereWolf-250

Binary开启了NX与Canary
题目中没有提供libc,所以不要妄想找到题目的libc,肯定需要用无libc的方式.
首先逆向分析题目:
题目模拟了"狼人杀"-Werewolf这款游戏,其中每个role-角色都建立一个action存储用户的行为。

在heap上建立了一个存储rope的list,分别储存*action与action的length。
共有一下四种操作:

整体来说题目流程是比较清晰的,不难逆向。

漏洞触发在show函数中,是一个比较容易发现的格式化字符串漏洞

图片描述
原本在2月场中在kill中出现的double-free被修补

图片描述

利用该format string,因为我们可以无限次地edit一个role,再通过show打印出来触发漏洞
从而我们拥有了无限读写的能力 no limit read or write.

我们不考虑确定libc的地址,因为ichun之前题目的环境也是比较..,从来找不到确定的libc版本,所以考虑ret2syscall,通过泄露的一个libc地址确定syscall的地址,再通过stack pivot到heap中ret2syscall rop,最后spawn shell。
这里需要解决几个问题:

最终的exp基本是按照上述的思路进行:

再次通过Ropgagtes执行execve("/bin/sh",NULL,NULL)Spawn shell

图片描述

最后,在写入栈中,我们用show函数中的rbp地址作为跳板,向栈中写入数据。
为了防止通信数据量过大造成阻塞,exp中全部用的%hhn进行写入。
注意通过rbp跳板向栈中写value要从高地址向低地址写,这是由于程序本身造成的,调试可见端倪,不再赘述。

结果:
图片描述

 
 
 
 
 
 
➜  workspace file werewolf
werewolf: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=017d1e3c242c96d9c9073c650e91c531d53749ec, stripped
➜  workspace checksec werewolf
[*] '/mnt/hgfs/Binary/CTF/Shooting/ichun/Pwn/Were_wolf_250/workspace/workspace/werewolf'
    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)

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

最后于 2019-2-1 16:20 被admin编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 201
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2

有个问题想请教下,cycle()函数的作用是什么
2018-1-17 21:23
0
雪    币: 236
活跃值: (155)
能力值: ( LV8,RANK:137 )
在线值:
发帖
回帖
粉丝
3
用格式化字符串%hhn写地址时,假设想写成0x4,但是打印的字符数本身就超过4个,就需要写256+4=260个溢出后写入0x4,这就是cycle()函数的作用,嗯,其实就是一个取模运算
2018-1-17 23:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
TacXingXing 用格式化字符串%hhn写地址时,假设想写成0x4,但是打印的字符数本身就超过4个,就需要写256+4=260个溢出后写入0x4,这就是cycle()函数的作用,嗯,其实就是一个取模运算
懂了 谢谢:)
2018-1-18 09:24
0
雪    币: 7
活跃值: (240)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
5
老哥现在做什么工作的,看你博客挺高产,佩服的很。
2018-1-18 10:05
0
雪    币: 206
活跃值: (108)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
支持下
2018-1-18 10:43
0
雪    币: 236
活跃值: (155)
能力值: ( LV8,RANK:137 )
在线值:
发帖
回帖
粉丝
7
哈哈,不是不工作才会有时间写博客,搞乱七八糟的嘛,我还是学生
2018-1-18 10:44
0
游客
登录 | 注册 方可回帖
返回
//