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

server/2024/9/23 11:54:38/

一、环境搭建

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

r10e

  • Darwin: https://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip
  • Linux: https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
  • Windows: https://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip

二、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_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk

http://www.ppmy.cn/server/12977.html

相关文章

vue中使用input上传做了文件个数限制,触发了限制之后再次上传刚刚的图片触发不了事件

如果在Vue中使用<input type"file">上传文件&#xff0c;并设置了文件个数的限制&#xff0c;那么在达到限制后&#xff0c;再次上传相同的图片可能不会触发change事件。这是因为浏览器认为文件并没有发生变化&#xff0c;所以不会触发change事件。 解决这个问…

云原生Kubernetes: K8S 1.29版本 部署Jenkins

目录 一、实验 1.环境 2.K8S 1.29版本 部署Jenkins 服务 3.jenkins安装Kubernetes插件 二、问题 1.创建pod失败 2.journalctl如何查看日志信息 2.容器内如何查询jenkins初始密码 3.jenkins离线安装中文包报错 4.jenkins插件报错 一、实验 1.环境 &#xff08;1&…

代码托管(二)git(1)介绍

一、git相关 git github gitlub 二、gitlub签名认证 使用ssh克隆代码&#xff0c;使用gpg签名提交代码。 1、ssh签名 一对公钥和密钥&#xff0c;公钥复制到gitlub上。步骤如下 1.1、先在本地生成密钥和公钥 &#xff08;1&#xff09;配置用户名和邮箱 git config --g…

第20篇 Vue命令简介

Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它允许开发者通过使用命令行工具来创建和管理项目。以下是一些常用的 Vue 命令&#xff0c;这些命令通常在项目的根目录下使用 Vue CLI 运行。 1. **创建新项目**: bash vue create my-project 这将创建一个…

Matlab之绘制地球

绘制地球的抽象三维模型&#xff0c;后续可以在地球模型上标点之类的 一、版本说明 MatlabR2016B PS&#xff1a;从下面的代码可以看出&#xff0c;导入了海岸线数据&#xff08;Matlab自带&#xff09;&#xff0c;因此可能依赖版本&#xff0c;或者需要下载对应的工具箱 二…

计算机网络的基础知识

tcp叫段&#xff0c;udp叫报&#xff0c;ip叫包&#xff0c;链路层叫帧。 我们在网线中跑的就是帧。 tcp段和udp报没有长度限制&#xff0c;只有在ip层和链路层才有包和帧的最大限制。 一个tcp段&#xff0c;在tcp缓存区中被封装&#xff0c;然后传到ip层进行拆分和封装&#x…

redis故障中出现的缓存击穿、缓存穿透、缓存雪崩?

一、背景&#xff1a; 在维护redis服务过程中&#xff0c;经常遇见一些redis的名词&#xff0c;例如缓存击穿、缓存穿透、缓存雪崩等&#xff0c;但是不是很理解这些&#xff0c;如下就来解析一下缓存击穿、缓存穿透、缓存雪崩名词。 二、缓存穿透问题&#xff1a; 常见的缓存使…

vue 动态改变css样式

文章目录 问题描述 问题描述 大家好&#xff01;今天是2024年4月26日|农历三月十六&#xff0c;时间过得好快&#xff0c;今天这博文主要动态改变css样式&#xff0c;具体实现效果如下&#xff1a; 在data里面声明一个isShow:true属性&#xff0c;通过isShow显示不同的图片 isS…