WHCTF-2017-Router题目分析 – 作者:瑟瑟发抖咸鱼黄

0x01 First

去年就在xctf攻防世界平台上做了这一道题,但是当时关于go的逆向恢复符号表的时候遇到了一些,问题,今天警察做题也遇到了这个问题,需要恢复符号表,并找到了解决IDA pro7.0使用python脚本报错的问题,于是便打算重头写一遍

0x02 Second

题目打开有一个路由器的登陆界面和一个附件程序,下载之后,为一个Router文件,结合

网页可知,这是一个路由器的管理程序

1.png

接下来对给的程序进行分析,先扔进linux执行试试,发现会生成一个settings.config文件,但是发现无法直接读取,在网页上,进行fuzz,发现也存在一个export.php页面,访问也可以得到一个无法直接读取的settings.config页面,考虑这是该路由器的配置文件

2.png

binwalk跑一下可以知道这是一个go开发的

3.png

扔进IDA进行分析,使用ida python脚本恢复go的符号表

脚本地址:https://github.com/sibears/IDAGolangHelper/

因为IDAGolangHelper支持IDA Pro 7.4,使用IDA7.0就会遇到一些错误,需要对插件的一些文件进行修改,将文件 GO_Utils/__init__.py,第16行self.bt_obj = Utils.get_bitness(ida_ida.inf_get_min_ea())替换为self.bt_obj = Utils.get_bitness(idc.BeginEA())就可以了

4.png

这里我们是想要知道config文件有些啥,所以恢复符号表后,在string中查找config,发现一个字符串,应该就是config文件加载完成后的提示

5.png

我们直接跟进去,找到调用位置,4013BD

6.png

接下来,我们就可以将文件使用gdb进行调试,这里我们可以安装一个插件方便调试,我用的peda,很方便,在0x4013BD处下个断点,然后运行

gdb router
break *0x4013BD
run

可以在栈中找到用户名和密码,登陆测试都OK

7.png

接着IDA中逆,发现了一个main_Backdoor

8.png

跟踪这个函数,结合页面登陆后,有一些功能,POST了command参数,可以知道,可以利用这个backdoor 命令执行

9.png

10.png

0x03 Third

其实整体来看,这道题目难度并不是很大,但东西很杂,直接叫他reweb比较好,go符号表的恢复也在一直在todolist里面呆了好久,今天终于解决了,同时也借着这个机会,加深了常用逆向工具如IDA和gdb的使用,也算是有些收获。

来源:freebuf.com 2020-06-08 11:53:12 by: 瑟瑟发抖咸鱼黄

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论