NSSCTF IOT题目复现
[HGAME 2022 Week1]饭卡的uno
发现是hex文件,于是尝试直接拖到ida里逆向分析,发现直接可以拿到flag
[HGAME 2023 Week1]Help marvin
发现附件是一个.sr文件,在查找下发现了pulseview这个工具,于是尝试进行一个利用,结合提示的SPI,猜测是使用spi协议来解析这段
SPI协议
链接:https://zhuanlan.zhihu.com/p/290620901
1.用单独的数据线和单独的时钟信号来保证发送端和接收端的数据同步
2.产生始终的一侧称为主机,另一侧为从机,总是只有一个主机
3.数据采集在时钟信号上升沿或下降沿进行
时钟是一个震荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样
-
主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从
MOSI
信号线上进行发送到从机; -
主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过
MISO
信号线发送;
具体如图所示
SPI总线包括4条逻辑线,定义如下:
-
MISO:
Master input slave output
主机输入,从机输出(数据来自从机); -
MOSI:
Master output slave input
主机输出,从机输入(数据来自主机); -
SCLK :
Serial Clock
串行时钟信号,由主机产生发送给从机; -
SS:
Slave Select
片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号,但具体还是要查看芯片手册。
时钟频率
SPI总线上的主机必须在通信开始的时候配置并生成相应的时钟信号。在每个SPI时钟周期内,都会发生全双工数据传输。
主机在MOSI上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它。
所以综上所述,我们不难发现D1在其中扮演这片选信号的作用,而至于D2是主机发出还是从机发出的,这需要进行一手尝试,最终的数据如下
然后我们只需要对解出来的数据进行十六进制转字符就可以咯,脚本如下
1 | a="33,34,67,61,6D,65,7B,34,5F,35,74,34,6E,67,65,5F,53,70,31,7D" |
[HGAME 2023 week2]Pirated router
发现附件是一个.bin文件,结合我之前读的一篇文章,尝试使用binwalk进行分离,但是发现分离后的文件中的squashfs-root文件夹是空的,走投无路下去查了wp,发现要使用如下工具
https://github.com/rampageX/firmware-mod-kit
然后尝试使用如下指令对.bin文件进行分解
1 | ./extract-firmware.sh /home/fault/Desktop/new/AC10086W_FW_1.1.4.5.bin |
然后分解出来的文件在工具目录中的fmk目录下,进去在bin目录下找到了类似于加密flag的可执行文件
于是二话不说,直接ida一把嗦,发现为arm架构的可执行文件,伪代码如下
查看unk_4543B0可知如下
逆向脚本如下
1 | a="4B 44 42 4E 46 58 56 4D 53 17 40 48 12 4D 44 7C 45 4A 51 4E 54 42 51 46 7C 12 50 7C 10 62 50 5A 5E" |
然后就拿到了flag