基本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 ...
随机推荐
- 小tips:tomcat下JSP页面引用css、js等资源路径404问题
在JSP页面头部添加如下代码: <% String path = request.getContextPath(); String basePath = request.getScheme() ...
- Angular 18+ 高级教程 – NgModule
前言 NgModule 在 Angular v14 以前是一门必修课.然而,自 Angular v14 推出 Standalone Component 以后,它的地位变得越来越边缘化了. 本教程从开篇 ...
- OIDC – 关于 SAML 和 ADFS
前言 最近听朋友说, 正在使用 ADFS 做 SSO, 哎哟. 我都是用 OIDC 做的, 这个 ADFS 是啥? 没听过. 于是搜索了一下, 这里先做一个小记入. ADFS 介绍 参考: stack ...
- Azure – 对比 AWS Research Report
前言 最近有机会接触了一下 AWS, 在对比完之后决定继续用 Azure, 这里小小记入一下. VM & SQL Server Azure 和 AWS 都可以选择 2 in 1, 或者 Web ...
- AJAX——简介
AJAX 同步与异步 AJAX 快速入门
- 提升软件测试效率与灵活性:探索Mock测试的重要性
Mock测试是测试过程中的一种方法,用于替代那些难以构造或获取的对象,通过创建虚拟对象来进行测试.所谓难以构造的对象如何理解呢? 举例来说,像HttpServletRequest这样的对象需要在具有s ...
- 【赵渝强老师】MySQL的闪回
MySQL DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至 ...
- 使用iis设置网站php版本为7.3
内容:使用iis设置网站php版本为7.3这张图 是多少人的噩梦 早期的宝塔版本 没办法在线升级, php版本只能到7.1 默认就没有7.2以上版本 怎么办?可以在iis设置第一步: 第二步 ...
- MySQL精品学习资源合集 | 含学习教程笔记、运维技巧、图书推荐
MySQL凭借开源.免费.低门槛.稳定等优势,成为了当前最流行的关系型数据库之一.从1998年发行第一版以来,通过不断地更新迭代,MySQL被越来越多的公司使用,已然成为当下潮流. 为了帮助大家更好地 ...
- iOS定义常量的两种方式define和FOUNDATION_EXPORT
FOUNDATION_EXPORT的使用方法: 1.h文件 FOUNDATION_EXPORT NSString * const kTestString; 2.m文件NSString * const ...