盒子
盒子
文章目录
  1. 前言 :
  2. 环境搭建 :
    1. 预备环境安装 :
    2. 安装qemu :
    3. 安装共享库 :
    4. 运行 :
    5. 调试 :

ARCH PWN Environment

前言 :

wiki上的东西基本撸完了。告一段落了,接下来就靠自己刷题刷了,今天看了眼关于arm和mips的pwn。学到了一些东西。先写写搭建环境的部分。

环境搭建 :

预备环境安装 :

安装 git,gdb 和 gdb-multiarch,同时安装 binfmt 用来识别文件类型。

1
2
3
$ sudo apt-get update
$ sudo apt-get install git gdb gdb-multiarch
$ sudo apt-get install "binfmt*"

安装qemu :

对版本的要求不是很严格,直接通过apt等包管理安装即可。

1
$ sudo apt-get install qemu-user

通过 qemu 模拟 arm/mips 环境,进而进行运行和调试。

安装共享库 :

这时候只能运行静态链接的arm和mips文件,并不能运行动态链接的。

23BA693A-3BAA-4A41-A347-0BC169E6A8AF

不能运行动态mips文件。

72A094CD-EE37-4B78-9938-8772D2F1FEE1

可以运行静态arm文件。

所以需要安装共享库才能运行动态链接文件。

安装对应架构的共享库,可以通过如下命令搜索:

1
$ apt-cache search "libc6" | grep ARCH(架构名称)

CBCFCFEB-990C-47C0-AA6A-2FEFFB8EC053

我们只需安装类似 libc6-ARCH-cross 形式的即可。

这里的mips文件,我们下载libc6-mipsel-cross。

运行 :

  1. 静态链接的直接运行,系统会自动调用对应架构的qemu。
  2. 动态链接的要附上对应的qemu并指定共享库路径,如下图是32位mips的动态链接。

使用-L指定共享库路径。

1
$ qemu-mipsel -L /usr/mipsel-linux-gnu/ ./add

C8D83752-A228-4B50-A6A8-1E784577C549

调试 :

可以使用qemu中的-g指定端口:

1
$ qemu-mipsel -g 1212 -L /usr/mipsel-linux-gnu/ ./add

然后使用 gdb-multiarch 进行调试,先指定架构,然后使用remote调用端口:

1
2
pwndbg> set architecture mips (但大多数情况下这一步可以省略, 似乎 pwndbg 能自动识别架构)
pwndbg> target remote localhost:1212

B40B63DB-5A7E-4A70-8931-E0E82389D6CA

之后就可以进行调试了。

同样的,如果想要运行调试其他架构的二进制文件,只需要安装其他架构的qemu和共享库就可以了。

支持一下
扫一扫,支持v1nke
  • 微信扫一扫
  • 支付宝扫一扫