看雪论坛
发新帖
1

[原创]蝶澈的CTF题的回忆

xdxdxdxd 2017-9-6 16:53 416

参考资料

[分享]蝶澈的CTF题

embedded-device-lab

之前分析蝶澈的CTF题过程中,学到了一些新东西。一直想记录一下,算是交流和来往。可是等到忘的快差不多了也还是没写。

简单分析

看到文件名感觉像是一个正常的设备固件,搜索一下发现是一个真是的路由器的固件,还曾出过漏洞。

下载了原版固件,使用binwalk解包之后,对所有的文件进行了对比。
我采用的方式是针对每个文件hash,然后比较。

find . -type f |xargs md5 > test.txt
diff 1.txt 2.txt


可以看到文件大概有3处修改,增加了nc文件,passwd和services文件。以及help目录删掉了一些文件。

看蝶澈的writeup中使用了https://github.com/bmaia/binwally这个工具做两个目录的文件比较。

静态分析:

看一下字符串,可以看到不少有价值的字符串。不过看不到中文的字符串。

直接cat可以看到中文:

动态调试

路由器的环境搭建可以参考看雪。通常来说搭建一个mips的调试环境还是需要花费不少时间,踩一些坑的。为了方便分析。我做了一个基于docker的一键测试环境embedded-device-lab可以直接使用gdb或者ida动态调试。

经过简单的尝试,发现应该是需要输入一个密码。如果密码正确,可以获得flag。

通过getflag。socket等关键字,可以定位到关键函数400310。通过一番调试发现,

这里:

loc_400710:
lw      $v1, 0x850+var_830($fp)
li      $v0, 1
beq     $v1, $v0, loc_40038C
nop

需要v1不等v0才能进入有getflag相关的逻辑。而当我们随便输入密码的时候,v1都是等于v0=1的。所以,在这里把v0修改成其他的值,就可以继续运行到getflag相关的逻辑。

其实我也分析过了一下加密的函数,只是没看懂。

本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (3)
1
xdxdxdxd 2017-9-6 16:56
2
测试一下markdown
1
风亦映寒 2017-9-6 17:20
3
emmm,    NoConName  2014  CTF  的final  :vodka
学者learner 2017-9-10 21:42
4
很有意思
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 域名 加速乐 保护 | SSL证书 又拍云 提供 | 微信公众号:ikanxue
Time: 0.011, SQL: 9 / 京ICP备10040895号-17