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. 宝塔安装onlyoffice

    1. 拉取镜像 docker pull onlyoffice/documentserver 2. 构建容器 进入宝塔管理面板->docker->镜像,可以看到镜像已被安装成功 配置容器参数 ...

  2. 【转】git常用操作

    创建版本库 git clone url 克隆远程版本库 git init 初始化本地版本库 配置 git config --global user.name 'chengcp' 配置global级别的 ...

  3. 小tips:HTML元素属性分类以及不常用属性介绍

    HTML元素属性分类 全局属性和局部属性 属性可以分为两类:全局属性和局部属性. 其中全部元素都能使用的通用属性称为全局属性.只能运用在某些特定元素的属性,称为局部属性,例如form的action属性 ...

  4. Spring —— 事务角色&&事务属性

    事务角色 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法       事务属性:    事务传播行 ...

  5. [TK] 理想的正方形

    题目描述 有一个整数组成的矩阵,现请你从中找出一个指定边长的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 题目分析 其实这道题和滑动窗口很像,而滑动窗口使用优先队列解决. 我们都知道优先队 ...

  6. 《Vue.js 设计与实现》读书笔记(1-3章)

    第 1 章.权衡的艺术 命令式 or 声明式 命令式:关注过程 声明式:关注结果 声明式直接声明想要的结果,框架帮用户封装好命令式的代码,所以在封装的过程中要做一些其他的事情来(生成要做的事情/找出差 ...

  7. 树莓派2 CentOS7.9 安装配置笔记

    1. 镜像下载与安装 http://isoredirect.centos.org/altarch/7/isos/armhfp/找到https://mirrors.tuna.tsinghua.edu.c ...

  8. 调查报告解读之国外数据库篇:MySQL国内使用率第一,多少企业有意替换国外产品?

    为了解数据库行业以及从业人员的现状.数据库选型.中国数据库的发展趋势等,墨天轮于2022年开始进行问卷收集,历时24天,共征集到有效问卷3476份,并于2月10日整理发布了<2022年墨天轮数据 ...

  9. go~wasm插件的开发

    Go和TinyGo是两种不同的Go语言编译器,它们之间有以下几点区别: 目标平台: Go:Go语言编译器主要面向通用计算机平台,如Windows.Linux.macOS等. TinyGo:TinyGo ...

  10. 云原生周刊:Kubernetes v1.29 新特性一览 | 2023.12.11

    开源项目推荐 kubedog Kubedog 是一个用于在 CI/CD 部署管道中监视和跟踪 Kubernetes 资源的库. 这个库被用于 werf CI/CD 工具中,在部署过程中跟踪资源. Ru ...