PWN初体验之ret2text

2024-03-08 17:10
文章标签 初体验 pwn ret2text

本文主要是介绍PWN初体验之ret2text,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x00 序

​ "Hello,World!"的浪漫可能只有直男才懂!在1就是1、0就是0的非黑即白的元宇宙世界里一定只会有少年的足迹!天真永不消逝,浪漫至死不渝!生命不熄,学习不止!致每一个有梦想却被现实抛弃和质疑的追梦人!

​ 言归正传,最近在学习二进制漏洞的挖掘,今天就拿一个demo做一个return to text的分析。

0x01 文件分析

​ Demo是一个名为ret2text的文件,在Ubuntu中使用file命令查看文件信息。

在这里插入图片描述

  • 是一个ELF可执行文件
  • 32位
  • 小端序
  • i386架构

​ 使用checksec查看保护开启情况

在这里插入图片描述

  • RELRO开启Partial模式
  • 未开启金丝雀保护
  • 堆栈不可执行
  • 未开启内存地址随机化

0x02 静态分析

​ 使用32位IDA打开ELF文件

在这里插入图片描述

查看分析伪代码

在这里插入图片描述

  • 定义字符变量s。
  • 调用gets函数获取输入并存到s中。
  • 在调用gets函数时并未对输入进行长度的判断,存在可溢出点。

查看汇编代码

在这里插入图片描述

  • 在调用gets函数之前将参数s的地址赋值给了eax
  • 并将s的地址作为gets函数的参数压住栈中

0x03 动态调试

​ 在Ubuntu使用GDB调试文件。

在这里插入图片描述

​ 将断点下到main函数,运行文件。

在这里插入图片描述

​ 单步调试到调用gets函数时。

在这里插入图片描述

  • 此时eax的值(参数s的地址)为0xffffd0bc。

使用命令stack查看函数调用栈的情况。

在这里插入图片描述

  • esp指针的地址为0xffffd0a0
  • ebp指针的地址为0xffffd128
  • 那么函数返回的地位就是0xffffd12c
  • s的位置在0xffffd0bc。

测试输入覆盖

在这里插入图片描述

  • 可以完成栈数据的覆盖

计算输入点到返回地址的长度

在这里插入图片描述

  • 0x70的长度可以覆盖到返回地址

测试

在这里插入图片描述

  • 成功覆盖到返回值地址
  • 可再用四个字节即可覆盖返回地址

0x04 查找代码可执行点

​ 在IDA查询是否有system函数可以利用。

在这里插入图片描述

  • 文件调用了system()函数
  • 并在调用时直接执行了/bin/sh命令

​ 查找命令执行的地址

在这里插入图片描述

  • 找到引用地址0x0804863A

0x05 POC编写

from pwn import *context.arch = "i386"p = process("./ret2text")
elf = ELF("./ret2text")
libc = ELF("/lib/i386-linux-gnu/libc-2.27.so")padding = "a"*0x70
retaddr = 0x0804863A
payload = padding + p32(retaddr)p.sendlineafter("do you know anything?\n",payload)
p.interactive()
  • 该POC脚本为本地利用,pwntools也提供远程利用方式。
  • 使用了相对地址,脚本与文件放在同一目录下。

0x06 运行脚本

在这里插入图片描述

  • 成功执行命令

这篇关于PWN初体验之ret2text的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787799

相关文章

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

html初体验标准标签

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="text"></body></html> 内容展示

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

2024年“羊城杯”粤港澳大湾区网络安全大赛PWN 全部解析

2024年“羊城杯”粤港澳大湾区网络安全大赛PWN 全部解析 hard+sandbox:ptrace 系统调用概述: logger:pstack: [X] 🛰:ly3260344435[X] 🐧:3260344435[X] BiliBili:鱼影信息[X] 公众号:鱼影安全[X] CSDN:落寞的魚丶[X] 知识星球:中职-高职-CTF竞赛[X] 信息安全评估(

【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验

前言 最近因为业务需要,需要做一款 UI 定制的鸿蒙 Launcher,于是就开始了「找到代码」、「研究代码」、「魔改代码」的套路流程,仅以此文章作为知识备份和技术探讨所用,也希望能给其他小伙伴提供一些源码的解析思路,方法大家各自魔改! 一、官方简介 Gitee codes:应用子系统/Launcher Launcher 作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应

通义千问AI PPT初体验:一句话、万字文档、长文本一键生成PPT!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 你有多久没有听到国内AI大模型的最新消息了? 不是国内AI领域不卷了,而是“卷”的方向变了。2023年卷

华为云 Flexus X 实例使用测评:上手初体验,比想象的更丝滑

华为云 Flexus 云服务是华为云推出的一款主打柔性算力,高效性能,高安全,高性价比的旗舰级云服务产品。主要面向金融、游戏、零售、直播等高负载业务场景,比较适合当前绝大数企业的一些云上需求。你可以根据你应用需要的性能,配置不同的规格。 上手初体验 现在,我们以一款实例配置为例,介绍华为云 Flexus X 的上手体验。 进入到华为云 Flexus 云服务的首页,点击购买按钮,进入配置页

2024年“羊城杯”粤港澳大湾区网络安全大赛 PWN部分

2024年“羊城杯”粤港澳大湾区网络安全大赛 PWN部分 Author:Ns100kUpFrom:极安云科-服务中心Data:2024/08/27Copyright:本内容版权归属极安云科,未经授权不得以任何形式复制、转载、摘编和使用。 培训、环境、资料、考证公众号:Geek极安云科网络安全群:624032112网络系统管理群:223627079 网络建设与运维群:870959

GPT-SoVITS-WebUI 初体验

一、安装   conda create -n GPTSoVits python=3.9 #

Pyhton3+openCV3初体验

其中python3采用的anaconda进行Python的安装与库的管理。 安装好anaconda后,就可以通过anaconda来安装opencv了。打开Anaconda Prompt命令行程序,输入conda list,可以查看已安装的库。 输入conda install --channel https://conda.anaconda.org/menpo opencv3 可以对opencv