root@v

Are You OK?

ARM-PWN从入门到放弃0x00-环境准备

vorblock / 2019-08-03


0x00 前言

学PWN也有一段时间了,x86/x86_64 下算是入了个门,平时接触ARM比较多,正好以ARM架构下再更加深入的学习PWN。

会用的工具、环境:

0x01 环境安装

这里选用的有两种环境

  1. ARM设备 树莓派

之前618买了树莓派,派上用场了。

把PI的官方系统换成了Ubuntu 18.04。

安装了GCC 、gdb、gef(经测试只有gef能用),其他也没什么需要装的。

关闭地址随机化

   sudo cat /proc/sys/kernel/randomize_va_space # 状态查看
   2 # 开启中
   sudo echo 0 > /proc/sys/kernel/randomize_va_space 
   bash: /proc/sys/kernel/randomize_va_space: Permission denied
   su
   echo 0 > /proc/sys/kernel/randomize_va_space
   cat /proc/sys/kernel/randomize_va_space
   0 #这就OK
  1. QEMU 模拟 (WSL2)

安装

   #防止又出什么乱七八糟的错误和需求,尽量都装上
   apt install gdb gdb-multiarch ##
   apt install qemu ##
   apt install gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu ##gcc arm 依赖库安装

0x02 启动和调试

  1. 树莓派

    直接运行

    进行socat绑定端口 就OK

      socat tcp-listen:6666,fork exec:./binfile
  2. QEMU

    • 32bit

      # 本地GDB调试
      qemu-arm -g 1234 -L /usr/arm-linux-gnueabi ./binfile
      gdb-multiarch
      target remote localhost:1234
      # 绑定运行到指定端口 远程调试
      socat tcp-l:10002,fork exec:"qemu-arm  -L /usr/arm-linux-gnueabi ./binfile",reuseaddr &
      # + -g 方便调试  
      socat tcp-l:10002,fork exec:"qemu-arm -g 1234 -L /usr/arm-linux-gnueabi ./binfile",reuseaddr &
    • 64bit

      # 本地调试 -g 等待GDB调试
      qemu-aarch64 -g 1111 -L /usr/aarch64-linux-gnu ./file
      socat tcp-l:10002,fork exec:"qemu-aarch64  -L /usr/aarch64-linux-gnu ./binfile",reuseaddr &
      socat tcp-l:10002,fork exec:"qemu-aarch64 -g 1234 -L /usr/aarch64-linux-gnu ./binfile",reuseaddr &

0x03 调试过程

在树莓派直接gdb调试就行。省略。。。

img

使用qemu+gdb-multiarch+插件进行调试步骤

qemu-aarch64 -g 10002 -L /usr/aarch64-linux-gnu ./baby_arm

   gdb-multiarch ./baby_arm -q
   target remote:10002

img

0x04 题目搭建

基于ctf_xinetd项目自己改了一个

地址:CTF_ARM_xinetd

0x05 参考链接