写在最前:
大家分析的时候看一下自己学号是多少,然后分析对应的文件哈,我想都没想就打开01分析了,全部都做完了发现我不是这个文件,当事人现在就是很后悔,非常后悔呜呜呜呜呜。
实验一
1 加载bin文件找到reset函数的步骤
打开IDA Pro 7.6
,打开task1_0x.elf
文件, 选对应的选项。
然后点开main
函数,f5
反汇编生成简单易懂的代码。
2 逆向存在溢出缓冲区的函数截图
从main
函数开始分析,分析如下:
总之,main
函数的主要功能如下:
- 显示输入提示“
input your Student ID immediately
”; - 接收4字符的输入,存入
aRxBuffer
; - 显示
aRxBuffer
+\n
这5个字符; - 调用
HelpFunc()
,以及一堆不知名函数。
点开HelpFunc()
,分析如下:
很明显,这个就是溢出函数了。主要功能是:
- 收2字符的输入,存入
length
; - 回显
length
+\n
这3个字符; - 收8个字符的输入,存入
shellcode
; - 把
length
转换成数值,存入len
; - 把
shellcode
从字母的ASCII码值转换成数值,比如e8
转换成14和8; - 把
shellcode
的数值形式依次赋值给Buffer[len]
到Buffer[len+3]
。
因为len
就是第二个输入,是自己输入的,所以能够赋任意值到任意地址上去。我们这里覆盖掉函数的返回值就行。
3 逆向找到flag打印函数的截图
点开Text View
从上往下一翻就翻到了,flag打印函数就是Die
。
起始地址是080018E0
。
由于固件的最低位是1,所以实际上的地址是080018E1
。解释如下图。
4 溢出函数栈图
在HelpFunc
中点开sp
变量,就可以进入到栈图的页面。
f5
反汇编,然后注释里有sp
,点开这个。
5 栈的溢出原理
画了个简单的示意图:
我们需要覆盖返回地址,也就是写入BP+4
~BP+8
这一部分。从溢出函数栈图中可以看到Buffer
的起始地址与BP
的距离是0x14
,而len
就是返回地址的最后一位,所以len=Buffer与BP的距离+4
,就是24
(注意是10进制)。
老师给了多个不同的样本,Buffer
大小不同,计算方式相同。
6 Qemu模拟运行固件的获取flag的截图
6.1 首先,安装QEMU
apt-get install
的版本太老,没有实验需要的架构。因此采用源码安装:
wget https://download.qemu.org/qemu-7.0.0.tar.xz
tar xvJf qemu-7.0.0.tar.xz
cd qemu-7.0.0
sudo apt-get install ninja-build -y # ninja
sudo apt install libglib2.0-dev -y # glib-2.56 gthread-2.0
sudo apt install libpixman-1-dev -y # pixman-1
./configure --prefix=~/qemu-7.0.0/build --target-list=arm-softmmu --enable-debug
make
make install
我在~
目录下安装QEMU,因此运行configure
时目录采用~/qemu-7.0.0/build
。
安装完成后,在~/qemu-7.0.0/build
目录下即可看到需要的可执行文件。
./qemu-system-arm -M help
查看是否有mps2-an386
和netduinoplus2
。
6.2 获取flag
运行elf文件:
~/qemu-7.0.0/build/qemu-system-arm -M netduinoplus2 -cpu cortex-m4 -m 16M -nographic -d in_asm,nochain -kernel ~/exp6/task1_01.elf -D log.txt
注意实验一要选netduinoplus2,否则有段错误。
然后,输入三个内容:
- 学号后4位;
- 偏移长度(我的是24);
- shellcode,也就是跳转的函数地址,由于字节序的原因,需要从后往前填(也就是
E1180008
)。
就得到flag:文章来源:https://www.toymoban.com/news/detail-494613.html
文章来源地址https://www.toymoban.com/news/detail-494613.html
到了这里,关于【HUST】网络攻防实践|6_物联网设备固件安全实验|实验一 裸机缓冲区溢出漏洞利用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!