文章目录
题目介绍
环境搭配以及文件提取
bin文件,首先用binwalk来提取文件
- 先安装bin
sudo apt install binwalk
- 提取文件
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,也就是字符结束标志喽,然后呢,这个字符串就去掉了端口号,它就会自行去拼接