basic rop3-rop

本文介绍了在开启NX保护的情况下,如何利用基本的Return-Oriented Programming (ROP)技术,通过int 80系统调用来绕过用户态栈限制,执行内核态操作。主要内容包括确定用户态偏移量、构造指令欺骗寄存器、设置中断等步骤,最终实现调用execve("/bin/sh")来获取shell。

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

pwn——basic rop

(ret2system):
老规矩,先checksec一下:

在这里插入图片描述

开启了NX,堆栈不可执行,这里提一下,复制文件进虚拟机之后最好改一下权限,命令是:

chmod 755 name

放入ida中:发现get()函数,可以溢出

在这里插入图片描述
这里与上一道题不同的是NX保护,所以我们无法通过在用户态的栈里写入一些类似system()的命令,所以我们要往内核态的栈里面写,但两个栈内存上是独立的,无法通过用户态的栈传参

这里就要用另外一种方式,这里普及一下知识:
众所周知,有三种情况下cpu会从用户态切到内核态:
系统调用,异常,中断(说白了三种都是中断)
在这里,int 80就是一种中断,int 80陷入内核后,内核进程就会去找80这个中断是干嘛的,找到了是系统调用再取eax看看是哪个系统调用,然后将寄存器内的参数传入内核中,可以说是对cpu的一种欺骗
现在大致确定一下思路:
1.先确定用户态的偏移量
2.在返回地址上写入一些指令,达成对寄存器的欺骗
3.在调好寄存器之后&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值