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. Google Maps Embed API & JavaScript API

    前言 很多年前写过一篇 Google Map 谷歌地图, 这篇算是翻新版本. Google Map Registration Google Maps Platform 是整个 Google Map 的 ...

  2. Bit, Byte, ASCII, Unicode, UTF, Base64

    前言 做项目偶尔会接触到 stream 这个感念,不管是 memory stream 还是 file stream,它们又会提到 bytes. 还有像 Identity – 安全基础知识 中提到的 S ...

  3. SpringBoot——配置文件分类

    配置文件分类 1级:file:config/application.yml(jar包所在目录)               [最高] 2级:file:application.yml 3级:classp ...

  4. MVC模式与三层架构

    MVC 模式    三层架构    MVC 模式 与 三层架构 的关系   

  5. 系统编程-进程-vfork使用、浅析

    1. 先贴代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int globvar = 6 ...

  6. SXYZ-7.3训练赛

    T1 房 啥啥啥,T1又又又爆了,整个人精神状态 良好. 解题思路 考虑数据保证任意两个房子不重合 建一个结构体存两边 最后判断一下 \(>t\) 加两个 \(==t\) 加一个 == 但是!! ...

  7. LeetCode 1349. 参加考试的最大学生数 (状压DP 或 二分图最大独立子集)

    给你一个 m * n 的矩阵 seats 表示教室中的座位分布.如果座位是坏的(不可用),就用 '#' 表示:否则,用 '.' 表示. 学生可以看到左侧.右侧.左上.右上这四个方向上紧邻他的学生的答卷 ...

  8. 05 Transformer 中的前馈神经网络(FFN)的实现

    2:20:理论链接 博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链 ...

  9. 让容器通信变得简单:深度解析 Containerd 中的 CNI 插件

    作者:尹珉,KubeSphere Ambassador & contributor,KubeSphere 社区用户委员会杭州站站长. 引言 在上一篇文章中,我们详细讨论了 Kubernetes ...

  10. Rsync 秒杀一切备份工具,你能手动屏蔽某些目录吗?

    引言 Rsync 是一种快速且通用的命令行实用程序,可通过远程shell在两个位置之间同步文件和文件夹. 使用 Rsync,可以镜像数据,创建增量备份,并在系统之间复制文件.复制数据时,你可能要根据文 ...