>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网 | xxx>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网 – xxx
菜单

>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网

三月 4, 2020 - 黑吧安全网

ARM架构下的 Pwn 的一般解决思路

来源:本站整理 作者:佚名 时间:2020-03-05 TAG: 我要投稿

0x01 写在前面
本文作为”Multi-arch Pwn 系列”中的文章之一,因为篇幅过长,只能分架构来总结了。
多架构Pwn的题目虽然不多,但还是想要在这里总结一些常见的思路。
本文的部分内容引用了大佬的博客原文,已在文章末尾的参考链接中注明了原作者。
 
0x02.1 前置环境(基于Mac OS的环境搭建)
我们如果要使用多架构进行利用,我们一般需要安装qemu进行调试。
在 Mac OS 下我们可以使用brew install qemu来安装我们所需要的qemu。
但是,我们会发现我们无法使用大多数博客所述的qemu-arm来运行静态链接的其他架构程序。
经过查阅官方文档,我们发现官网中已经做了明确说明
5. QEMU User space emulator
5.1 Supported Operating Systems
The following OS are supported in user space emulation:
– Linux (referred as qemu-linux-user)
– BSD (referred as qemu-bsd-user)
也就是说,仅限Linux系统和BSD系统才能进行用户级别的仿真运行。那么我们尝试进行系统级别的仿真。
此处我们使用树莓派的系统镜像进行模拟。
准备qemu kernel
Kernel下载链接:https://github.com/dhruvvyas90/qemu-rpi-kernel
System Image下载链接:https://www.raspberrypi.org/downloads/raspbian/
此处因为网络原因导致镜像下载受阻,于是采用另一位大佬给出的替代方案~
关于启动选项的说明
-kernel kernel-qemu:指定启动所加载的内核文件类型,此处使用下载的内核映像类型kernel-qemu。
-cpu arm1176:指定启动所使用的CPU文件,此处模拟ARM1176 CPU。Raspberry Pi板上搭载了Broadcom BCM2835,这个处理器用的是ARM1176JZ-F。
-m 256:指定仿真系统可使用的内存大小,此处RAM的大小是256MB. 设定成比256MB大的值板子好像不能启动.
-M versatilepb:设定模拟的开发板类型。versatilepb是ARM Versatile Platform Board。
-kernel kernel-qemu-4.4.34-jessie:指定启动所加载的内核镜像,此处使用下载的内核映像kernel-qemu-4.4.34-jessie。
-append "root=/dev/sda2":指定内核的命令行。
-hda 2013-09-25-wheezy-raspbian.img:Harddisk 0使用2013-09-25-wheezy-raspbian.img。
 
0x02.2 前置环境(基于Deepin4的环境搭建)
本部分全文基本全文引用如何 pwn 掉一个 arm 的binary——m4x,故做二次版权声明。
虚拟机前期准备工作——更新apt源、安装必备软件
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screenfetch git vim python python-pip python3 python3-pip gdb gdb-multiarch cmake time
wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh
pip3 install –user unicorn keystone-engine capstone -i https://pypi.tuna.tsinghua.edu.cn/simple
git clone https://github.com/sashs/filebytes.git
cd filebytes
sudo python3 setup.py install
git clone https://github.com/sashs/ropper.git
cd ropper
sudo python3 setup.py install
cd ~
wget https://github.com/keystone-engine/keystone/archive/0.9.1.tar.gz
tar xzvf 0.9.1.tar.gz
cd keystone-0.9.1/
mkdir build
cd build
../make-share.sh
sudo make install
sudo ldconfig
kstool
pip3 install –user ropper keystone-engine -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip install pwntools
安装QEMU及其依赖
sudo apt-get install qemu-user
安装动态运行库(不运行此步骤也可以运行静态多架构程序)
使用命令apt-cache search "libc6" | grep -E "arm|mips"搜索可用的多架构运行库。
>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网
我们只需要安装形如libc6-*-cross的运行库即可。
使用命令sudo apt-get install libc6-arm64-cross libc6-armel-cross libc6-armhf-cross libc6-mips-cross libc6-mips32-mips64-cross libc6-mips32-mips64el-cross libc6-mips64-cross libc6-mips64-mips-cross libc6-mips64-mipsel-cross libc6-mips64el-cross libc6-mipsel-cross libc6-mipsn32-mips-cross libc6-mipsn32-mips64-cross libc6-mipsn32-mips64el-cross libc6-mipsn32-mipsel-cross安装。
安装binutils环境
当我们使用Pwntools里的asm命令时,可能会报如下错误:
dpkg-query: 没有找到与 *bin/armeabi*linux*-as* 相匹配的路径
[ERROR] Could not find ‘as’ installed for ContextType(arch = ‘arm’, bits = 32, endian = ‘little’, log_level = 10)
    Try installing binutils for this architecture:
    https://docs.pwntools.com/en/stable/install/binutils.html
此时我们需要安装binutils依赖,首先使用命令apt search binutils | grep [arch](此处的[arch]请自行替换)
>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网
随后安装显示出的包即可完成
>ARM架构下的 Pwn 的一般解决思路-系统安全-黑吧安全网

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。

上一篇:虚拟指令集Pwn入门返回黑吧安全网首页】【进入黑吧技术论坛
下一篇:针对比特币对等网络的隐蔽分区攻击(上)


Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51