首页
社区
课程
招聘
[原创]蝶澈的CTF题的回忆
2017-9-6 16:53 5009

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

2017-9-6 16:53
5009

参考资料

[分享]蝶澈的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相关的逻辑。

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


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

收藏
点赞1
打赏
分享
最新回复 (3)
雪    币: 251
活跃值: (108)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
xdxdxdxd 3 2017-9-6 16:56
2
0
测试一下markdown
雪    币: 305
活跃值: (369)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
风亦映寒 1 2017-9-6 17:20
3
0
emmm,    NoConName  2014  CTF  的final  :vodka
雪    币: 131
活跃值: (303)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学者learner 2017-9-10 21:42
4
0
很有意思
游客
登录 | 注册 方可回帖
返回