一步一步学ROP之Android ARM 32位篇

本文详细解析了在Android ARM 33位环境中进行Return-Oriented Programming (ROP) 的过程,包括payload的构造原理,如何确定地址,以及write函数如何帮助返回到目标函数。通过分析level6.c的反汇编和内存映射,解释了payload中填充字节和返回地址的设定,以确保控制流能正确回到vulnerable_function。
摘要由CSDN通过智能技术生成

   0x00

    本文仅解释说明蒸米大神一步一步学ROP之Android ARM 32位篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。


   0x01

    第一个问题:payload = 'A'*132 + p32(callsystemaddr),这个132是怎么来的?

    要回答这个问题,我们需要把level6.c反汇编,level6.c代码如下:

 

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
 
void callsystem()
{
system("/system/bin/sh");
}
 
void vulnerable_function() {
char buf[128];
read(STDIN_FILENO, buf, 256);
}
 
int main(int argc, char** argv) {
if (argc==2&&strcmp(&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值