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的更多相关文章

  1. 一步一步学ROP之linux_x64篇

    一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...

  2. 一步一步学ROP之linux_x86篇

    一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 ​ 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...

  3. Windows XP PRO SP3 - Full ROP calc shellcode

    /*     Shellcode: Windows XP PRO SP3 - Full ROP calc shellcode     Author: b33f (http://www.fuzzysec ...

  4. Rop 文件上传解决思路

    由于服务请求报文是一个文本,无法直接传送二进制的文件内容,因此必须采用某种转换机制将二进制的文件内容转换为字符串.Rop 采用如下的方式对上传文件进行编码:<fileType>@<B ...

  5. rop框架签名功能控制

    平台级控制: 通过<rop:annotation-driven/>的 sign-enable 属性即可开启或关闭服务平台签名验证功能:<rop:annotation-driven s ...

  6. rop框架中@ServiceMethod注解属性

    @ServiceMethod 属性 method :代码服务方法名version :表 示 版 本 号 group:服务分组名.服务的分组没有特殊的意义,您可以为服务定义一个分组,以便在事件监听器.服 ...

  7. Linux内核ROP学习

    0x00 前言 1.SMEP(Supervisor Mode Execution Protection):一种减缓内核利用的cpu策略,禁止内核态到用户态内存页的代码执行(32位的addresses ...

  8. 栈溢出之rop到syscall

    当程序开启了nx,但程序有syscall调用的时候.这时栈溢出的利用就可以通过rop来执行syscall的59号调用execve('/bin/sh',null,null),这是这次alictf一道pw ...

  9. 20145236《网络对抗》进阶实验——64位Ubuntu 17.10.1 ROP攻击

    20145236<网络对抗>进阶实验--64位Ubuntu 17.10.1 ROP攻击 基础知识 ROP攻击 ROP全称为Retrun-oriented Programmming(面向返回 ...

  10. 蒸米一步一步ROP X64学习笔记

    原文地址https://segmentfault.com/a/1190000007406442,源代码地址https://github.com/zhengmin1989/ROP_STEP_BY_STE ...

随机推荐

  1. [JS设计模式]:鸭子类型与多态

    鸭子类型 编程语言按照数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言. 动态类型语言对变量类型的宽容给实际编码带来了很大的灵活性.由于无需进行类型检测,我们可以尝试调用任何对象的任 ...

  2. C# – Record, Class, Struct

    前言 之前在 C# – 10.0 已经有介绍过 Record 了. 但之前还没怎么用到, 最近有用到了, 所以特别写多一篇. Class vs Struct 参考: C#详解struct和class的 ...

  3. [OI] 莫比乌斯函数与莫比乌斯反演

    9. 莫比乌斯函数与莫比乌斯反演 9.1 莫比乌斯函数 9.1.1 定义 设 \(\mu\) 为莫比乌斯函数,则有: \[\mu(x)=\begin{cases}1\qquad (n=1)\\ 0\q ...

  4. 深度DFS 和 广度BFS搜索算法学习

    目录 广度优先的动态图 深度优先的动态图 广度和深度的具体步骤 深度和广度的应用场景 图的两种遍历方式: 深度优先遍历(DFS--Depth First Search) 广度优先遍历(BFS--Bre ...

  5. CPU性能测试基准(Dhrystone)学习

    简介 Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量.程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响. Dhrystone是由Rein ...

  6. linux那些事之页迁移(page migratiom)

    Page migration 页迁移技术是内核中内存管理的一种比较重要的技术,最早该技术诞生于NUMA系统中(Page migration [LWN.net]),后续由于内存规整以及CMA和COW技术 ...

  7. 将一个Eigen::Matrix中的数据(数组格式),按行写入到json文件当中.

    1.这里主要实现如何以数组的形式写入到json文件当中,因为c++的Jsoncpp库中的.append只支持一个字符的写入(还是python的json友好).去网上找了老久的解决办法,发现中文解答全是 ...

  8. 使用 acme.sh 生成免费 90 天的 SSL 泛域名证书

    原文地址求你点进去看,给自己的博客加加热度 https://typecho.hanzhe.site/archives/13.html acms.sh 是 Github 上开源的一款 SSL 证书申请工 ...

  9. .NET无侵入式对象池解决方案

    Pooling(https://github.com/inversionhourglass/Pooling),编译时对象池组件,在编译时将指定类型的new操作替换为对象池操作,简化编码过程,无需开发人 ...

  10. KubeSphere 社区双周报| 2024.08.02-08.15

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...