【HUST】网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南
写在最前:最近没空写报告,实验原理虽然已经摸清了但是没空写。flag2到4是一些大胆的想法的通关方式,flag5是正经通关的。之后写报告的时候会补发正经的实验原理,和flag2到4正常的通关方式。
记得修改学号。
安装Keil
安装破解过程:
安装
Keil5:一路Next就行,名称邮箱全部任意填,安装驱动什么的一律选是,安装路径最好不要包含中文,或者直接默认。破解
Keil5:以管理员权限打开刚刚安装的Keil5,关掉弹出来的让安装包的窗口,然后点击File-License Management,复制CID到破解软件中。破解软件填写CID、设置Target为ARM之后,点击Generate生成LIC,粘贴到Keil5的LIC输入框中。点击Add LIC就行。(日期过期没事)安装
ARM CMSDK_CM4_FP:老师发的Keil5默认是没有我们要的ARM CMSDK_CM4_FP。不过老师还发了两个.pack文件,双击安装就行。一路Next,安装路径要和Keil5的安装目录相对应。
新建项目并添加文件:
Project-New uVersion Project ,然后配置直接按实验指导书就行,后面也直接按指导书。添加文件可以直接拖进去。编译就是Project-build。
注意:如果之前装过其他版本的
Keil,并新建了项目,记得删掉项目目录中的Listings、Objects、RTE,否则它会自动优先从这些目录下读取配置,版本就不对。
如果你配置项完全正确,和指导书完全一致,就直接0 Error。有错误就自行检查。
然后就会生成在Objects/下,运行如下指令运行:
~/qemu-7.0.0/build/qemu-system-arm -M mps2-an386 -cpu cortex-m4 -m 16M -nographic -d in_asm,nochain -kernel ~/exp6/task2/task2.axf -D log.txt
注意:任务2和3都要用架构mps2-an386。
flag2和3
添加头文件的麻烦,贴个硬编码的,不用加头文件:
volatile unsigned int * pCTRL=(volatile unsigned int *)0xE000ED94;
*pCTRL=4;
0xE000ED94就是MPU的CTRL地址。
CTRL赋值为4就是关MPU。
还有种方法,改RNR,直接切换MPU让原来用的那块作废。
老师就只是更新了一点点内容,假如用的是最新版lib:
先加头文件:#include "CMSDK_CM4_FP.h",:
for(int i=0;i<8;i++){
MPU->RNR=i;
MPU->RASR&=0xFFFFFFFE;
}
MPU->CTRL=5;
与运算之后,MPU的末位是0,代表使MPU禁用。而当MPU全部被禁用时,作为特权级任务,这个Task就不受区域的限制了。在《权威指南》11章有说。
特权级的默认背景区域就是全部。
flag4
在StartFreeRTOS(id, vTask3);上方添加这一行:
xTaskCreate( vTask3, "Test3", 100, NULL, ( 1 | ( 0x80000000UL ) ), NULL );
这时候,就有人要问了~为什么这一行能行呢?
之前我试成功的时候也没想到能行,后来写报告的时候看了一下流程就懂了。
先创建任务并放到任务序列里,再调用StartFreeRTOS。StartFreeRTOS的过程是先创建权限较低的vTask3任务,并在创建过程中完成对学号id的处理。在启动任务序列的时候,也有一部分对id的处理。但是!这些对id的处理,全部都在启动任务序列之前。因此,只要提前在任务序列中添加特权级的任务,并调用打印函数,即可完成打印。
ps:任务序列是并行执行的,第二个约束任务会挂掉。挂了就挂了,第一个已经打印了flag了。
老师要是想解决我这个绕过方式,就需要在启动任务序列之后,对id再进行一些变化,并延缓打印flag的速度。或者添加约束任务成功结束或返回后,才能打印flag的限制条件。
修改vTask3:

注意0x000029A9改为你的axf反汇编的vTaskRemove(也就是输出flag的函数)的地址加1。
注意:修改后编译的axf的函数地址会发生变化,先随便填一个,然后再逆向找这个函数的地址。
flag5
先逆向,看下你自己的栈空间和各种函数的地址。具体分析就和实验一一模一样的。
我的HelperBuffer大小是12,对应仨寄存器r1,r2,r3。类似的,如果你的大小是8,就对应俩寄存器。具体原因其实看ida的反汇编的最后一条pop指令就行,加3就是3个,加2就是2个。
xPortRaisePrivilege(提权函数)地址是000086E2。
但从这开始不行,因为它会先push,把push的作为返回值,所以要跳过push这一条指令,从000086E4进。
vTaskDelayBackup(输出flag的函数)地址是00001C7C。
输入学号。
长度24(是r1,r2,r3,pc+r4,pc)。
输入地址(记得加1):
(分别对应function的r1,r2,r3,pc、提权函数的r4,pc)
4个0 4个0 4个0 e5 86 0 0 4个0 7d 1c 0 0
log.txt里找Function和提权函数,看它pop后的情况就行。
先跳转提权:

再跳转flag函数:

【HUST】网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南的更多相关文章
- <网络攻防实践> 课程总结20169216
课程总结20169216 每周作业链接汇总 第一周作业:Linux基础入门(1-5).基本概念及操作 第二周作业:linux基础入门(6-11).网络攻防技术概述网络攻防试验环境搭构.Kali教学视频 ...
- 20169214 2016-2017-2 《网络攻防实践》第十一周实验 SQL注入
20169214 2016-2017-2 <网络攻防实践>SQL注入实验 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表 ...
- 2017-2018-2 20179204《网络攻防实践》第十一周学习总结 SQL注入攻击与实践
第1节 研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 1.1 原理 在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统 ...
- 2017-2018-2 20179204《网络攻防实践》linux基础
我在实验楼中学习了Linux基础入门课程,这里做一个学习小结. 第一节 linux系统简介 本节主要介绍了linux是什么.发展历史.重要人物.linux与window的区别以及如何学习linux. ...
- 2017-2018-2 20179215《网络攻防实践》seed缓冲区溢出实验
seed缓冲区溢出实验 有漏洞的程序: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our tas ...
- 20169206 2016-2017-2 《网络攻防实践》 nmap的使用
Part I 使用nmap扫描ubuntu靶机 先给出nmap的官方中文操作手册https://nmap.org/man/zh/,其实并不太好用,而且有时候会打不开,但至少是官方手册. 探查操作系统 ...
- 2017-2018-2 20179204《网络攻防实践》第十三周学习总结 python实现国密算法
国密商用算法是指国密SM系列算法,包括基于椭圆曲线的非对称公钥密码SM2算法.密码杂凑SM3算法.分组密码SM4算法,还有只以IP核形式提供的非公开算法流程的对称密码SM1算法等. 第1节 SM2非对 ...
- 2018-2019-2 20165206 网络攻防技术 Exp5 MSF基础应用
- 2018-2019-2 20165206<网络攻防技术>Exp5 MSF基础应用 - 实验任务 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击,如 ...
- 物联网设备是如何被破解的?分析一种篡改IoT固件内容的攻击方式
随着智能硬件进入到人们的生活,人们的生活质量开始有逐步的提高,人们与智能硬件之间的联系更加紧密.同时,智能硬件的安全问题也必须引起高度重视,因为其直接影响到人身安全.社会安全和国家安全. 大家是否 ...
- 20155321 《网络攻防》 Exp2 后门原理与实践
20155321 <网络攻防> Exp2 后门原理与实践 实验内容 例举你能想到的一个后门进入到你系统中的可能方式? 我觉得人们在平时上网的时候可能会无意识地点击到一些恶意的网站,这些网站 ...
随机推荐
- xcode 12.3 mac m1
- 解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
春节前DeepSeek R1和Kimi1.5炸翻天了,之前大家推测的O1的实现路径,多数都集中在MCTS推理优化,以及STaR等样本自优化方案等等,结果DeepSeek和Kiim直接出手揭示了reas ...
- ATT&CK实战系列(一)
环境下载 下载靶场环境,并导入虚拟机分别是win2003.win7.winserver2008 配置网络 虚拟机--编辑--虚拟机网络编辑器--添加网络VMnet2--仅主机模式分配的地址是192.1 ...
- 微信小程序单击事件与长按事件冲突的解决办法
众所周知,在小程序中,长按事件一松手是会触发单击事件的,而在我们的实际需求中,往往是需要单击事件和长按事件并存的. 然而,小程序却又好像想到了这种情况似的,给了我们一个触摸开始,一个触摸结束 也就是, ...
- 【Spring】Spring的@Autowire注入Bean的规则测试
背景 在项目中使用Spring的Bean,一般都使用默认的Bean的单例,并且结合@Autowire使用. 实在有同一个类型多个实例的情况,也使用@Qualifier或@Resource实现注入. 所 ...
- Javascript 显示当前滚动条滚动的百分比
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【目标检测】一、初始的R-CNN与SVM
1.流程 为什么要用SVM而不是CNN最后一层的softmax? 取什么模型必然是有标准衡量,这个流程取得是书上[4]写的,作者说他得实验证明SVM比FC的mAP要高,所以我流程暂且这样画了. R-C ...
- Qt个人项目总结 —— MySQL数据库查询与断言
3.Qt项目总结--数据库查询断言问题 问题: 当我使用MySQL数据库的查询操作时, 如果查询的数据在数据库中不存在,那么Qt会直接被干崩溃 但是?为什么呢?不应该是返回if语句中的结果吗,为什么会 ...
- 自己修改的一款Typora学术主题Academic-zh-vq
这款typora主题是在Academic-Zh主题的基础上修改而来的. 主题衍生路径: 官方Academic主题-->zh-academic主题-->Academic-Zh主题--> ...
- 解密prompt系列50. RL用于优化Agent行为路径的一些思路
OpenAI新推出的Deep Research功能,属实有些惊艳,也验证了去年的一些观点,之后的大模型工作流会呈现一些截然不同的形态,有敏捷型的例如语音端到端的及时对话,也会有异步长流程的复杂任务,去 ...
