[投稿]Defcon Shitsco程序分析–信息泄露

这是今年defcon上的一道200分的pwn题目,是一个linux 32位的elf程序,程序见附件 shitsco。

一、静态分析

首先运行程序,看大致程序的功能。如下图所示,这个程序提供了一个internet操作系统,支持一定的命令(enable,ping等)。

111f

用ida分析程序,main函数:

2

main函数中主要有3个子函数。对这3个子函数依次分析。

第一个函数sub_80489d0:

3

很容易看出是读取了/home/shitsco/password中的内容,存入到804c3a0地址处。

第二个函数sub_8048c30:

4

这个函数主要是读取一行用户的输入。

第三个函数sub_8048a50:这个函数较为复杂,主要是对用户的输入进行解析。

5

首先观察ebp不是和平常程序一样作为栈帧使用,这里用了指向一块内存。而这块内存正好为系统支持的命令(enable)。

通过后面分析,发现此块内存为一个结构体数组,存储命令信息。

6

该结构体如下:

其中privilege是权限,如果为1表示命令需要enable成功后才能执行。内存804c3c0初始化为0,只有enable后,内存804c3c0才会变成1。

7

Handler表示该命令对应的处理函数。

8

最后以一个表统计了一下命令的信息:

Command

Privilege Argc Handler
enable 0 1 sub_8049230
ping 0 1 sub_80493E0
tracert 0 1 sub_8049330
? 0 1 sub_80490C0
flag 1 0 sub_8048D40
shell 0 0 sub_8048CF0
set 0 2 sub_80494A0
show 0 1 sub_8048E50
credits 0 0 sub_8048CA0
quit 0 0 sub_8048CD0
disable 0 0

sub_8048CB0

通过对各处理函数分析,发现了flag的处理函数,直接打印了flag的内容,说明肯定是想让用户执行flag命令,但flag命令有权限限制,所以还必须通过enable函数。

9

enable 函数:

enable1

enable命令需要带一个参数,这个参数就是a1,如果a1不为空,就把a1作为password,如果a1为空,就让用户输入password。然后将输入的password与内存804c3a0(之前程序从password文件中读取的password)比较,如果一样,就enable成功。

从以上分析,可以知道需要知道password才行,但这文件在服务器上,猜测应该有信息泄露。

enable2

详细分析enable的处理函数,发现如下esp+4ch-34h处为用户输入的密码,而strcmp的返回值放在esp+4ch-14h中。如果用户输入的密码为32位,且不含回车,那么后面的printf将会将strcmp的返回值打印出来,如果为-1,说明输入的偏小,如果为1,说明输入偏大,如果=0,说明相当。根据strcmp的返回值,我们可以暴力猜出password中的每一位。

二、动态分析

为了能进行动态分析,需要在系统中创建2个文件: /home/shitsco/flag和/home/shitsco/password,并随意写入一些字节。password以\x00结束。

动态分析,主要验证刚才strcmp处是否分析正确,在08049272处下断点。

12

13

0xbffff1e8指向了用户输入的密码123

单步运行到0x08049277

18

14

esp+0x38=0xbffff208,程序将strcmp的返回值eax放入0xvffff208,正好在用户输入的32字节之后。验证了静态分析的结果。

 

三、写出exp并测试

暴力获取password的py脚本如下:

 

exp测试:

nc开端口进行监听:

15

运行python脚本,得到password:

16

另外此处打印的不一定就是password,因为如果密码为bruT3m3hard3rb4by时,bruT3m3hard3rb4by与” bruT3m3hard3rb4by ”,比较,仍然会认为后者大,不会相等。

end1

成功获得flag

附件下载地址:http://pan.baidu.com/s/1o6BdBpK

赏金发放情况:本文获得《逆向工程核心原理》一本,已于6.9日发放到作者账号。

征稿启事:91RI 一直相信“你不与人分享,谁与你分享”, 分享的确是件非常有意义的事情。为了让优秀的同学有 地方分享自己的独到见解,也为了让更多同学从分享中受益,同时我们也希望给那些愿意分享的小伙伴们一点点心意作为感谢,所以我们隆重了推出“有奖征文”活 动!本次活动的详情可以围观《征稿启事