文章目录
题目介绍


环境搭配以及文件提取
bin文件,首先用binwalk来提取文件
- 先安装bin
sudo apt install binwalk
- 提取文件
binwalk -e firmware.bin


120200.squashfs这是一个linux的压缩文件
我们需要firmware-mod-kit工具来进行解压。
firmware-mod-kit工具:https://blog.youkuaiyun.com/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,也就是字符结束标志喽,然后呢,这个字符串就去掉了端口号,它就会自行去拼接
文章详细介绍了如何使用firmware-mod-kit工具解压bin文件,并通过提取压缩文件、安装依赖库、运行脚本来解压固件。接着,利用find命令查找包含后门软件的文件。解析initConnection()函数获取端口号,并最终输出md5(网址:端口)作为flag。
1014

被折叠的 条评论
为什么被折叠?



