异构PWN(1)-初探
一些在异构PWN中比较具有共性的操作和问题会在此处记录
基本工具安装
qemu安装
安装qemu qemu-user qemu-user-static$sudo apt-get install qemu qemu-user qemu-user-static
安装qemu-system$ sudo apt-get install qemu-system uml-utilities bridge-utils
- qemu-usr :指定动态链接库运行
- 安装动态链接库
$ sudo apt search "libc6" | grep arm
$ sudo apt install libc6-armel-cross #对应arm32
$ sudo apt install libc6-dbg-arm64-cross #对应arm64
- 安装动态链接库
如果需要安装其他版本的动态链接库,
可以在 http://ports.ubuntu.com/pool/main/g/glibc/ 中选择相应架构和版本下载
- qemu-user-static :包含了所有必需的库和二进制文件,运行静态链接的程序
- qemu-system : 模拟整个计算机系统的跨平台运行
调试工具安装
动态链接库冲突:sudo apt install gdb-multiarch
set sysroot lib路径
一些问题与解决方案
ROPgadget报错
在查找异构二进制文件的gadget时,不管是arm还是risc-v, ROPgadget会报类似如下错误:
报错1:
NameError: name 'CS_ARCH_ARM64' is not defined. Did you mean: 'CS_ARCH_ARM'? |
报错2:NameError: name 'CS_ARCH_RISCV' is not defined. Did you mean: 'CS_ARCH_MIPS'?
经过尝试,是因为 ROPgadget 和 Capstone 版本兼容性问题导致的:
- 最新的
Capstone 6.x同时产生报错1和报错2 apt install python3-capstone下载的Capstone 4.x不产生报错1,产生报错2
最终发现 ROPgadget v7.7 和 Capstone 5.0.6是笔者发现较新且兼容性较好的版本
建议完全卸载当前的 ROPgadget 和 Capstone ,采用官方安装方式
$ pip uninstall capstone ROPgadget -y |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zechariahの博客!