CTF pwn -- ARM架构的pwn题详解

arm架构的pwn题详解

  • 概述
  • 环境搭建
    • 使用QEMU
    • 使用gdb-multiarch
  • ARM架构基本知识
    • arm32位寄存器介绍
    • arm64位寄存器介绍
  • 一道例题
  • 参考博客
  • 总结

概述

  ARM架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。因此我们常用的手机、平板等移动设备都是采用ARM体系架构的,因此CTF中不可避免也会出现ARM架构的pwn题。不过这种题目涉及的知识点都不会像x86体系架构那么深和细。

环境搭建

使用QEMU

  QEMU
  借用官网的原话,QEMU is a generic and open source machine emulator and virtualizer.,qemu是一个通用的、开源的机器仿真器和虚拟机。因此我们可以在linux操作系统中安装它,然后用它来调试其它架构平台的程序。如何安装见下面代码所示:

# 最好先update一下
sudo apt update
sudo apt install qemu

  在安装qemu后,对于静态链接的arm程序就已经可以直接运行了,使用命令qemu-arm prog运行32位的arm程序,其中prog指代程序名。但对于动态链接的程序还是无法正常运行,此时需要安装对应架构的动态链接库才行。
  如下面的命令和截图所示,这里以运行64位动态链接的arm程序为例,键入命令后发现有如下截图的libc版本返回,我们安装debug版本的,即sudo apt install libc6-dbg-arm64-cross

sudo apt search "libc6" | grep arm

CTF pwn -- ARM架构的pwn题详解_第1张图片
  安装完后,在/usr目录下会出现aarch64-linux-gnu这个文件夹,该文件夹即对应刚安装好的arm64位libc库,之后我们使用下面的命令指定arm程序的动态链接器,即可运行程序。

qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./prog

  这里补充一下关于架构的一些知识以及介绍下qemu对应的一些命令。qemu-arm指的是arm32架构的,用这个命令来运行32位的arm程序,而qemu-a

你可能感兴趣的:(网络安全,ctf,pwn,网络安全,pwn,arm)