前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PWN][进阶篇]ROP_Ret2Shellcode-32实例

[PWN][进阶篇]ROP_Ret2Shellcode-32实例

作者头像
李鹏华
发布2024-03-12 15:18:45
720
发布2024-03-12 15:18:45
举报
文章被收录于专栏:网络信息安全网络信息安全
ROP_Ret2Shellcode-32实例
一、相关知识

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

ret2textshellcode 没有执行shell的函数,没有开启NX保护 传入自定义的shellcode

ret2libc 开启NX(可写的不可执行) 使用libc函数,leak libc + ROP

什么是shellcode? 通常是开启一个shell

Linux的系统调用

代码语言:javascript
复制
/usr/include/x86_64-linux-gnu/asm/unistd_32.h

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

上图是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 检查保护

我们发现没有NX和canary保护 这时我们可以用ret2text护着ret2shellcode

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

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

step3:看看主函数

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

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

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

rwxp权限ok的,我们是可以把shellcode写到这里的

step5 计算偏移

step6 exp开始 1、自动生成的shellcode 的exp 如下:

告诉电脑我们是什么程序,32位嘛不是,所以是i386,我的操作环境是linux 然后获取进程 利用pwntools自动生成shellcode payload还是,条用shellcode的ljust方法,两个参数依次是偏移量和用什么填充,再加上覆盖的地址 然后发送和获取交互环境

我们运行一个这个ex

撒花撒花!!!!

2、手写shellcode

给大家来讲解一下这个手写的shellcode 我们都知道最核心的是/bin///sh 所以我们在手写的时候push了3个参 push了68 ,对照ascll码也就是h 之后的两个push也就是h///nib/ 系统读取的时候是从右到左的,所以小端读进去之后也就是/bin///sh 再和大家说一下为什么是三个/ 如果主要是避免0的出现,/bin/sh从意思上就已经OK了,但是这样子的话不够8位,会自动补0,如果是0的话系统读到00就自动终止了,所以是/// mov ebx,esp呢就是我们最后读的/bin///sh给到了ebx 两个xor的原因是我们要将exc和edx清空,不能赋值给0 push 11 11是我们execve的系统调用号 pop eax 尽量用push + pop的方式来给寄存器赋值 这样子就ok了

希望大家有所收获!!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ROP_Ret2Shellcode-32实例
  • 一、相关知识
  • 二、实例教学
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档