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. 利用CSS 实现环形百分比进度展示

    先看效果图: UI设计了这样的效果,已读人数占总人数的百分比,环形展示. 这里可以用echarts图表,也可以用css实现,因为我是在小程序环境下,考虑到包大小体积,采用了css实现. 核心就是一行代 ...

  2. Nuxt Kit API :路径解析工具

    title: Nuxt Kit API :路径解析工具 date: 2024/9/22 updated: 2024/9/22 author: cmdragon excerpt: 摘要:本文介绍了Nux ...

  3. Blazor开发框架Known-V2.0.11

    Known今天发布了V2.0.11版本,本次版本添加了系统WebApi在线测试,系统菜单样式配置,表格支持用户设置栏位显隐和顺序,系统上下文支持静态组件与后端交互,以及对PgSQL进行了详细的测试,修 ...

  4. 快速理解和使用stream流

    数据量越大,硬件内核数越多,stream流相比传统for循环速度越快. 原因是stream流是可以并行处理的. 如果要使用stream流,可以直接用flatmap把外层嵌套扁平化,只留下自己需要处理的 ...

  5. Java遇到PKIX path building failed错误的解决办法

    Java调用HTTPS可能出现如下错误: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExc ...

  6. Linux基础常识

    1 什么是shell shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入的命令并到送到内核去执行,因此也被称为Linux的命令解释器. 显示系统当前使用的shell ...

  7. vue3 js 学习笔记

    Vue3-js 学习笔记 目录 Vue3-js 学习笔记 目录 前言 reactive 数据绑定 事件绑定 生命函数周期 计算属性-computed props emit-自定义事件 ref-获取元素 ...

  8. Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)

    前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具. DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL.PostgreSQL. ...

  9. Flink on Yarn和k8s

    Yarn 架构 下图为作业提交到yarn的交互流程: 组件列表 ResourceManager (RM):ResourceManager (RM) 负责处理客户端请求.启动 / 监控 Applicat ...

  10. 一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理

    CountDownLatch 是 Java 并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成. 一.设计理念 CountDownLatch 是 ...