ARM exploit编写一

本文详细介绍ARM环境下Shellcode的开发流程,涵盖调试器、编译器等工具使用,规避null-byte技巧,以及如何实现系统调用如write和execve。通过实际案例,展示如何编写紧凑、通用的Shellcode。

我们先ssh连接上之前已经使用qemu搭建好的arm环境。
在这里插入图片描述
本系列实验用到的工具包括:
gdb-调试器
gef-gdb插件
gcc-gnu编译器套件
as-汇编器
ld-链接器
strace-跟踪系统调用
objdump-检查反汇编中的空字节
objcopy-从ELF二进制文件中提取初始shellcode

在开始写shellcode之前,需要知道一些基础的准则,比如:

  1. shellcode应该紧凑并且没有空字节
    原因:我们正在编写shellcode,我们将使用它来利用缓冲区溢出等内存损坏漏洞。 由于使用了C函数’strcpy’,会发生一些缓冲区溢出。 它的工作是复制数据,直到收到空字节。 我们使用溢出来控制程序流,如果strcpy命中空字节,它将停止复制我们的shellcode,我们的漏洞将不起作用。
  2. 尽量避免库调用和绝对内存地址
    理由:为了使shellcode尽可能通用,我们不能依赖于需要特定依赖关系的库调用和依赖于特定环境的绝对内存地址

写shellcode包括如下几个步骤:

  1. 知道你想要使用的系统调用是什么
  2. 配置系统调用号和所选系统调用函数所需的参数
  3. 消除shellcode中的null-byte
  4. 将shellcode转为16进制字符串

理解系统函数
在深入研究我们的第一个shellcode之前,让我们编写一个输出字符串的简单ARM汇编程序。 第一步是查找我们想要使用的系统调用,在我们的例子中是是“write”。 可以在Linux手册页中查找此系统调用的原型:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值