工业信息安全技能大赛2020-济南站-IoT题目解题思路

IoT题目,原题描述

一台奇怪的单片机上运行着奇怪的程序,请您帮助调试相关程序。Flag格式为:flag{}

分析环境

Ubuntu 20.04
qemu 6.2.0
Ghidra 10.1

首先拿到题目,解压后是一个名叫main的文件,使用file命令识别其类型为ELF程序,CPU架构是RISC-V的。

RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。
与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件,该项目2010年始于加州大学伯克利分校。

既然知道了其CPU架构,可以试着使用qemu模拟运行ELF文件,首先安装qemu环境

sudo apt install gcc make libglib2.0-dev libpixman-1-dev ninja-build
wget https://download.qemu.org/qemu-6.2.0.tar.xz
cd qemu-6.2.0
./configure --target-list=riscv64-softmmu,riscv64-linux-user
make
sudo make install

安装好qemu环境后,直接使用qemu-riscv64命令运行main程序,启动程序后可以进行输入,经过测试当输入的字符串长度不为20个字节将直接退出,当字符串长度等于20个字节时,如果不匹配正确的答案会提示“You Lose!”。

那么这时候就得逆向分析了,可以使用反汇编工具,由于RISC-V这种CPU架构比较新,经过测试需要使用新版的反编工具,旧版的工具很多都无法支持,这里使用了Ghidra 10.1 这个版本的工具。

Ghidra 是由美国国家安全局(NSA,National Security Agency)的研究理事会为 NSA 的网络安全任务开发的软件逆向工程(SRE)框架,它有助于分析恶意代码和病毒等恶意软件,并可以让网络安全专业人员更好地了解其网络和系统中的潜在漏洞。
使用的时候需要提前安装JAVA环境,关于如何配置JAVA环境可以自行搜索。

使用工具分析main文件,能够正确识别其CPU架构

点击OK后,弹出一个自动分析对话框,点击Yes开始分析

选择默认的分析项,点击Analysze

经过一会就能分析完毕,这时候看到左边有一个Symbol Tree的窗口,这里显示了函数、变量等等标识符。

一般来说分析一个ELF程序,可以从main函数入手,那么,在Symbol Tree的窗口下面的Filter查询框查找是否有main函数

选择Exports导出表的main函数,Listing窗口是显示反汇编代码,Decompile窗口是反汇编的伪C代码

伪代码如下所示

经过静态分析可以知道其基本逻辑

1、长度要求20字节
2、输入的内容经过“异或”与正确答案各个字符匹配

现在需要处理一下异或的数组xor、cyt,双击伪代码的xor进入汇编代码,可以知道数组是4个字节为1组的

右键选择最开始undefined字符,选择Data -> dword使其定义为4个字节变量

目前变成ddw形式(dword)

同样右键选择ddw字符串,选择Data -> Create Array使其定义为一个数组

因为对比的字符串长度为20,那么在这里可以设定其值为20

设定后,xor数组如下

cyt数组同理可以设定为数组

根据异或的规则

A ^ B = C 可以得到 A ^ C = B

那么编写代码进行验证,这里使用python进行快速编码

#/usr/bin/python

cyt = [
0xF9,   0x95,   0x11E, 0x84,
0x43,   0x11E, 0x148, 0x186,
0x164, 0x108, 0x159, 0xDE,
0xBF,   0x78,   0x1E3, 0xC8,
0x154, 0x1FB, 0x9E,   0x104
]
xor = [
0x9F,   0xF9,    0x17F,  0xE3,
0x38,   0x146, 0x127,  0x1D4,
0x13B, 0x141, 0x16C, 0x81,
0xEC,   0x48,   0x1BC, 0x8D,
0x135, 0x188,  0xE7,  0x179
]

inputstr = ""
for i in range(20):
    inputstr += chr(cyt[i] ^ xor[i])
print(inputstr)

打印出结果为

运行main程序,输入“flag{XoR_I5_S0_Easy}”,提示正确!

参考链接:

https://writeup.ctfhub.com/Challenge/2020/%E5%B7%A5%E4%B8%9A%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E6%8A%80%E8%83%BD%E5%A4%A7%E8%B5%9B/%E6%B5%8E%E5%8D%97%E7%AB%99/tRBwdk3Fhndm4UVjpAYQHy.html

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注