一、pwn - 零基础ROP之Android ARM 32位篇(新修订,精华篇)

本文详细介绍了如何在Android环境下,针对32位系统进行ROP(Return-Oriented Programming)攻击的准备工作,包括环境搭建、Pwn代码编译、调试方法,以及如何寻找溢出点位和返回地址。文章以实例代码和调试步骤指导读者理解并实践ROP技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境搭建

  安装ndk r10e,必须得这个版本,其他版本可能导致  -fno-stack-protector 不生效!

r10e

二、Pwn代码编译

VSCode 新建个main.cpp文件,代码如下

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>

void callsystem()
{
    write(STDOUT_FILENO, "Flag:XY2024\n", 13);    
    write(STDOUT_FILENO, "call shell...\n", 13);   
    system("/system/bin/sh");
}


void vulnerable_function() {
    int i = 128;
    char buf[i];
    read(STDIN_FILENO, buf, 256);
}

int main(int argc, char** argv) {
    char buf[128] = {0};

    if (argc==2&&strcmp("passwd",argv[1])==0)
        callsystem();
    snprintf(buf, 128, "vulnerable_function=%p\n", vulnerable_function);    
    write(STDOUT_FILENO, buf, strlen(buf));        
    write(STDOUT_FILENO, "Hello, World\n", 13);    
    vulnerable_function();
}

新建Android.mk,内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := level6
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog
LOCAL_CFLAGS += -fno-stack-protector
include $(BUILD_EXECUTABLE)

新建Application.mk,内容如下:

APP_ABI := armeabi-v7a
APP_STL := c++_static
APP_CFLAGS += -fno-stack-protector 
APP_PLATFORM := android-21

cd到项目所在目录,执行编译:

d:\android-ndk-r10e\ndk-build NDK_PROJE
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江西省遂川县常驻深圳大使

喜欢本文,打赏下作者吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值