[PWN][进阶篇]ROP_Ret2Shellcode-32实例(上)

简介: [PWN][进阶篇]ROP_Ret2Shellcode-32实例

ROP_Ret2Shellcode-32实例

一、相关知识

二、实例教学


一、相关知识

之前我们说过ret2text漏洞是依赖于程序中存在执行 system("/bin/sh")的函数,那么如何解决ret2text的局限性

ret2textshellcode

没有执行shell的函数,没有开启NX保护

传入自定义的shellcode

ret2libc

开启NX(可写的不可执行)

使用libc函数,leak libc + ROP

什么是shellcode?

通常是开启一个shell

Linux的系统调用

/usr/include/x86_64-linux-gnu/asm/unistd_32.h

写shellcode就是在eax中放我们的系统调用号,最经常用的就是红框中的11

image.png

image.png

1.png

上图是32位的

如何写shellcode(两种方式)

1、手写

(1)调用execve(“/bin/sh”,null,null);

(2)传入字符串/bin///sh(三个’/’)

(3)系统调用execve

eax = 11

ebx = bin_sh_addr(第一个参数)

ecx = 0

edx = 0

2、pwntools自动生成

(1)先指定context.arch = “i386/amd64” (运行环境)

(2)asm(自定义shellcode)

(3)asm(shellcraft.sh())

(4)自动生成shellcode

NX保护(DEP)数据执行保护:可写的不可执行,可执行的不可写

二、实例教学

实例下载:提取码:8189

step1:checksec 检查保护

image.png

我们发现没有NX和canary保护

这时我们可以用ret2text护着ret2shellcode


step2:查看是否存在系统函数

image.png

-d 显示汇编语句 grep system 查找是否存在system函数,但是这里显然是没有的,所以只能用ret2shellcode(没有NX保护就可以用)

step3:看看主函数

image.png

我们看到了get,这就是我们的切入点

思路:程序先put,然后get,我们要覆盖这里,获取返回值,这个返回值就是0x804a080,就是strcpy函数上方的参数。

step4:查看804a080在哪个段,这个段是否有执行权限

相关文章
[c++][记录]编译libusb-win32过程
[c++][记录]编译libusb-win32过程
216 0
|
1月前
|
算法 API 数据安全/隐私保护
逆向学习crackme160题-007-reg 的 write up
逆向学习crackme160题-007-reg 的 write up
36 2
|
存储 Linux C语言
深入解析Linux环境下的sprintf()和printf()函数
在C语言中,`sprintf()`和`printf()`函数是用于格式化输出的两个重要函数。`sprintf()`函数将格式化的数据写入一个字符串,而`printf()`函数则将格式化的数据输出到标准输出。在Linux环境中,这两个函数被广泛应用于各种编程任务。本文将详细介绍这两个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
546 1
|
NoSQL 安全 Shell
简单的PWN学习-ret2shellcode
最近在学习pwn,这是一道2016年的pwn题目,主要学习关于栈溢出以及劫持栈指针达到命令执行的效果,笔者水平较差,请轻喷
|
前端开发 rax Shell
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(上)
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)
814 0
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(上)
|
Shell Linux
[PWN][进阶篇]ROP_Ret2Shellcode-32实例(下)
[PWN][进阶篇]ROP_Ret2Shellcode-32实例
175 0
[PWN][进阶篇]ROP_Ret2Shellcode-32实例(下)
|
前端开发 rax Shell
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例(上)
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例
410 0
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例(上)
|
Linux
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例(下)
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例
240 0
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例(下)
|
NoSQL Shell
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(下)
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)
280 0
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(下)
[PWN][高级篇]ROP-ret2libc基础知识
[PWN][高级篇]ROP-ret2libc基础知识
480 0
[PWN][高级篇]ROP-ret2libc基础知识