HUST网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南 ...

打印 上一主题 下一主题

主题 812|帖子 812|积分 2436

写在最前:最近没空写报告,实验原理虽然已经摸清了但是没空写。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/下,运行如下指令运行:
  1. ~/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

添加头文件的麻烦,贴个硬编码的,不用加头文件:
  1. volatile unsigned int * pCTRL=(volatile unsigned int *)0xE000ED94;
  2. *pCTRL=4;
复制代码
  0xE000ED94就是MPU的CTRL地址。
CTRL赋值为4就是关MPU。
  还有种方法,改RNR,直接切换MPU让原来用的那块作废。
老师不知道更新了什么内容,假如用的是最新版lib:
先加头文件:#include "CMSDK_CM4_FP.h",再添加如下(不保证能成,不能成再来找我):
  1. for(int i=0;i<8;i++){
  2.         MPU->RNR=i;
  3.         MPU->RASR=0x030F003A;
  4. }
  5. MPU->CTRL=5;
复制代码
  0x030F003A就是00000 011 00 001 1 1 1 00000000 00 11101 0,对应各种位,比如AP、区域大小,在《权威指南》11章有说。
  flag4

在StartFreeRTOS(id, vTask3);上方添加这一行(我这属于是重写vTask3结构进行的提权,正经提权还要找提权函数,懒得找了):
  1. xTaskCreate( vTask3, "Test3", 100, NULL, ( 1 | ( 0x80000000UL ) ), NULL );
复制代码
修改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)
  1. 4个0 4个0 4个0 e5 86 0 0 4个0 7d 1c 0 0
复制代码
log.txt里找Function和提权函数,看它pop后的情况就行。
先跳转提权:

再跳转flag函数:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表