基本ROP
ret2text
[NewStarCTF 2023 公开赛道]ret2text
(64)
execve本身并不是一个后门函数。
实际上,execve是一个标准的系统调用函数,用于在 Linux和类 Unix 系统中执行一个新的程序。
它的原型如下:
该函数接受三个参数:
1. filename:要执行的程序的文件名或路径。
2. argv:一个以 NULL 结尾的字符串数组,表示传递给新程序的命令行参数。
3. envp:一个以 NULL 结尾的字符串数组,表示新程序的环境变量。当调用execve函数时,它会将当前进程替换为新程序的代码,并开始执行新程序。
新程序接收argv和envp作为命令行参数和环境变量。
ret2shellcode
未开启NX保护,可以shellcode
v4_addr = int(r.recvline()[33:-1],16):
使用切片操作 [33:-1] 从接收到的数据中提取出地址部分。这个切片操作假设地址信息从第34个字符开始(因为Python的索引是从0开始的),并且忽略最后一个字符(通常是换行符 \n )。
将提取出的地址字符串转换为整数。 int() 函数用于将字符串转换为整数,这里的基数是16,因为地址通常是以十六进制形式表示的。
shellcode.ljust(0x60+8, b'a') :
• shellcode :这是一段用于执行攻击者希望在目标机器上执行的代码的二进制序列,通常是一个shellcode,它能够创建一个反向shell或者执行其他恶意操作。
• ljust(width, fillchar) :这是一个字符串方法,用于将原字符串左对齐,并使用 fillchar (在这里是 b'a' ,即ASCII码中的'a'字符)填充至指定的 width 宽度。如果原字符串超过这个宽度,则不会截断。
需要指定架构,因为pwn中默认生成的shellcode是32位的,所以不进行指定的话是打不通的,当遇到64位程序的时候一定要进行指定
ret2libc
ctfshow pwn48
(puts)(32)
[NewStarCTF 2023 公开赛道]ret2libc
(puts)(64)
ret栈对齐
ctfshow pwn45
(write)(32)
ctfshow pwn46
(write)(64)
write函数原型
ssize_t write(int fildes, const void *buf, size_t nbyte);
参数:
• fildes :文件描述符,这是一个非负整数,用于标识一个打开的文件或者其他类型的文件描述符。
• buf :指向要写入数据的缓冲区的指针。
• nbyte :要写入的字节数。
返回值:
• 成功时,返回写入的字节数。
• 如果发生错误,返回 -1 ,并设置 errno 以指示错误类型。
write 函数会尝试将 nbyte 字节的数据从 buf 指向的缓冲区写入到 fildes 指定的文件描述符。如果写入成功,它返回实际写入的字节数。如果返回的值小于 nbyte ,则可能意味着写入操作没有完成,或者遇到了文件末尾(EOF)。
puts函数原型
int puts(const char *str);
•参数:
• str :指向一个以 null 结尾的字符串的指针,该字符串将被输出到标准输出。
• 返回值:• 成功时返回一个非负整数。• 如果发生错误,则返回 EOF (通常是 -1)。
puts 函数会输出传入的字符串,并在字符串的末尾添加一个换行符。如果字符串本身以换行符结尾, puts 会再添加一个换行符,因此输出可能会包含两个连续的换行符。
基本ROP的更多相关文章
- 一步一步学ROP之linux_x64篇
一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...
- 一步一步学ROP之linux_x86篇
一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...
- Windows XP PRO SP3 - Full ROP calc shellcode
/* Shellcode: Windows XP PRO SP3 - Full ROP calc shellcode Author: b33f (http://www.fuzzysec ...
- Rop 文件上传解决思路
由于服务请求报文是一个文本,无法直接传送二进制的文件内容,因此必须采用某种转换机制将二进制的文件内容转换为字符串.Rop 采用如下的方式对上传文件进行编码:<fileType>@<B ...
- rop框架签名功能控制
平台级控制: 通过<rop:annotation-driven/>的 sign-enable 属性即可开启或关闭服务平台签名验证功能:<rop:annotation-driven s ...
- rop框架中@ServiceMethod注解属性
@ServiceMethod 属性 method :代码服务方法名version :表 示 版 本 号 group:服务分组名.服务的分组没有特殊的意义,您可以为服务定义一个分组,以便在事件监听器.服 ...
- Linux内核ROP学习
0x00 前言 1.SMEP(Supervisor Mode Execution Protection):一种减缓内核利用的cpu策略,禁止内核态到用户态内存页的代码执行(32位的addresses ...
- 栈溢出之rop到syscall
当程序开启了nx,但程序有syscall调用的时候.这时栈溢出的利用就可以通过rop来执行syscall的59号调用execve('/bin/sh',null,null),这是这次alictf一道pw ...
- 20145236《网络对抗》进阶实验——64位Ubuntu 17.10.1 ROP攻击
20145236<网络对抗>进阶实验--64位Ubuntu 17.10.1 ROP攻击 基础知识 ROP攻击 ROP全称为Retrun-oriented Programmming(面向返回 ...
- 蒸米一步一步ROP X64学习笔记
原文地址https://segmentfault.com/a/1190000007406442,源代码地址https://github.com/zhengmin1989/ROP_STEP_BY_STE ...
随机推荐
- Transforms的使用
Transform的作用 把图片经过Transforms的一些函数之后就会对图片进行一些变化.比如,resize就是改变其大小,totensor就是把图片PIL或者numpy类型转化为Tensor类型 ...
- SQL Server 冗余维护
介绍 冗余是维护的魔鬼, 是性能优化的天使 常见的冗余有 1. computed column 2. principal 的识别字段 3. cross computed 4. cascade soft ...
- HBase集群安装及集成
Hbase集群搭建 注意:在安装hbase或者hadoop的时候,要注意hadoop和hbase的对应关系.如果版本不对应可能造成系统的不稳定和一些其他的问题.在hbase的lib目录下可以看到had ...
- Springboot自定义Prometheus采集指标
添加依赖 <!--增加Prometheus依赖--> <dependency> <groupId>org.springframework.boot</grou ...
- 《MySQL 5.7从入门到精通(视频教学版)》代码课件教学视频下载
<MySQL 5.7从入门到精通(视频教学版)>代码课件教学视频下载 https://pan.baidu.com/s/1ZufDV6a_PEnjp-Bdh4IkuQ 提取码:vgnr 无版 ...
- Android Qcom USB Driver学习(四)
VID/PID识别USB设备 CDC-ACM驱动介绍 CDC-ACM(Communication Device Class--Abstract Control Model)驱动实现以USB设备驱动和t ...
- /proc/pagetypeinfo
这个文件是将buddyinfo的内容进一步细分: Free pages count per migrate type at order -- 不同order 按照migrate type的空闲page ...
- seaborn.lmplot详解
官方文档 首先我们要知道,lmplot是用来绘制回归图的. 让我们来看看他的API: seaborn.lmplot(x, y, data, hue=None, col=None, row=None, ...
- WSL默认安装目录
我当前在win11下进行以下操作,其它系统版本有问题可以留言 一.安装WSL 前提条件:我们需要保证你的操作系统版本满足 **Windows 10 版本 2004 及更高版本(内部版本 19041 及 ...
- python接口自动化框架-case依赖与SQL依赖以及SQL断言实现
框架目录: 整体思路: 采用excle数据驱动维护用例,数据依赖:两种实现方法case依赖与sql依赖,优先使用case依赖, 最终运行的用例是: 维护用例在datacase目录下: 涉及到用例信息新 ...