buuctf firmware(binwalk和firmware-mod-kit的使用)

文章详细介绍了如何使用firmware-mod-kit工具解压bin文件,并通过提取压缩文件、安装依赖库、运行脚本来解压固件。接着,利用find命令查找包含后门软件的文件。解析initConnection()函数获取端口号,并最终输出md5(网址:端口)作为flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目介绍

在这里插入图片描述
在这里插入图片描述

环境搭配以及文件提取

bin文件,首先用binwalk来提取文件

  1. 先安装bin
sudo apt install binwalk
  1. 提取文件
 binwalk -e firmware.bin

在这里插入图片描述
在这里插入图片描述
120200.squashfs这是一个linux的压缩文件
我们需要firmware-mod-kit工具来进行解压。

firmware-mod-kit工具:https://blog.csdn.net/ldwj2016/article/details/80712566

# For Ubuntu 需要安装的依赖库文件  
$ sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic  
git clone https://github.com/mirror/firmware-mod-kit.git  
  
# 进入源码目录  
cd firmware-mod-kit/src  
  
# 执行configure文件生成Makefile文件然后make编译生成可执行文件  
./configure && make 

把文件放在firmware-mod-kit目录下进行解压
在这里插入图片描述

extract-firmware.sh 解包固件

build-firmware.sh 重新封包

check_for_upgrade.sh 检查更新

进行如下解压。

 ./unsquashfs_all.sh  fireware/120200.squashfs 

然后得到目录

在这里插入图片描述
根据题目,他需要找后门软件,直接find即可

find -name  "*backdoor*"

在这里插入图片描述

然后查壳

在这里插入图片描述

脱壳

在这里插入图片描述
在这里插入图片描述

拖进ida

题目所要flag为:md5(网址:端口)
搜索字符串:
在这里插入图片描述
网址的话也就只有这个。网址:echo.byethost51.com

在主函数中关于连接的代码的话,也就这里 :
在这里插入图片描述
initConnection()函数

在这里插入图片描述
58转化为字符后是":"
在这里插入图片描述

进入 initConnection()函数后看到的是端口号为36667,查看一下这个函数,

char *strchr(const char *str, int c)

参数str – 要被检索的 C 字符串。
c – 在 str 中要搜索的字符。
在这里插入图片描述

33a422c45d551ac6e4756f59812a954b
if ( strchr(&s, ':') )
  {
    v0 = strchr(&s, ':');
    v3 = atoi(v0 + 1);
    *strchr(&s, 58) = 0;
  }

这个函数的意思我觉得是,检查一下这个网址后面有没有自带端口,有的话呢,就把端口值取出来赋给v3,也就是原来我们自己赋的端口值,然后把:这个位置改为0(为什么要把区分网址和端口的位置改为0,我也很好奇);没有的话呢,就直接跳过

刚才错了,转换为字符一看后,就知道了,
在这里插入图片描述
它是\0,也就是字符结束标志喽,然后呢,这个字符串就去掉了端口号,它就会自行去拼接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值