CTFshow-pwn入门-前置基础pwn20-pwn22

news2024/10/5 15:27:30

pwn20-pwn22是关于.got节跟.got.plt节的。这3道题的问题描述全是一样的,全都是问.got跟.got.plt是否可写以及他们的地址是什么,然后根据这些信息来拼成flag。那么关于.got和.got.plt的内容非常复杂,这里呢我也不解释了,推荐一个牛逼的博主的文章,大家可以自行去了解一下这两个节。
聊聊Linux动态链接中的PLT和GOT(1)——何谓PLT与GOT
聊聊Linux动态链接中的PLT和GOT(2)——延迟重定位
聊聊Linux动态链接中的PLT和GOT(3)——公共GOT表项
在这里插入图片描述
Ok,本篇文章我们只针对如何获得flag啊,具体涉及到got表即plt表的知识大家看以上的那三篇文章就行了。

解题思路

首先呢,题目问.got与.got.plt节是否可写,那么如何知道他们是否可写呢?

其实呢?Linux的可执行文件都有各种保护机制,包括Stack canaries、No-eXecute、ASLR和PIE、FORTIFY_SOURCE以及RELRO。其中RELRO保护机制就是与.got、.got.plt节是否可写有关!

我们使用python的pwntools工具中的checksec命令就可以查看这些保护机制的信息。例如:
在这里插入图片描述
这里可以看到上面的各种保护机制信息,其中RELRO是我们本篇文章重点关注的。

RELRO(ReLocation Read-Only)机制的提出就是为了解决延迟绑定的安全问题,它最初于2004年由Redhat的工程师Jakub Jelinek实现,它将符号重定向表设置为只读,或者在程序启动时就解析并绑定所有动态符号,从而避免GOT上的地址被篡改。如今,RELOR有两种形式:

Partial RELRO:一些段(包括.dynamic、.got等)在初始化后将会被标记为只读。在Ubuntu16.04(GCC-5.4.0)上默认开启Partial RELRO。
Full RELRO:除了Partial RELRO,延迟绑定将被禁止,所有的导入符号将在开始时被解析,.gotPlt段会被完全初始化为目标函数的最终地址,并被mprotect标记为只读但其实.got.plt会直接被合并到.got,也就看不到这段了。另外link_map和_dl_runtime_resolve的地址也不会被装入。开启Full RELRO会对程序启动时的性能造成一定的影响,但也只有这样才能防止攻击者篡改GOT。

其实还应该多加一种形式,那就是No RELRO。

所以:
当RELRO为Partial RELRO时,表示.got不可写而.got.plt可写。
当RELRO为FullRELRO时,表示.got不可写.got.plt也不可写。
当RELRO为No RELRO时,表示.got与.got.plt都可写。

而使用readelf -S 命令可以查看节头表以查看各个节的信息,这里其中就包含了节的所在地址。

所以我们可以使用checksec命令来看.got与.got.plt是否可写,使用readelf -S 命令来查看.got与.got.plt的地址。

下面我们就开始肝题目吧!

pwn20

在这里插入图片描述
首先我们将pwn文件托到虚拟机然后加上可执行的权限。

接下俩我们就可以使用checksec命令来看RELRO的情况了。

chmod +x pwn
checksec pwn

在这里插入图片描述
RELRO为No RELRO代表.got与.got.plt都可写,那么flag前一部分就为:ctfshow{1_1_。

下面我们再来查看地址:

readelf -S pwn

在这里插入图片描述
这样我们就可以拼出flag的后一部分了:0x600f18_0x600f28}。

所以的总的flag就为:ctfshow{1_1_0x600f18_0x600f28}

pwn21

在这里插入图片描述
首先我们将pwn文件托到虚拟机然后加上可执行的权限。

接下俩我们就可以使用checksec命令来看RELRO的情况了。

chmod +x pwn
checksec pwn

在这里插入图片描述
RELRO为Partial RELRO代表.got不可写而.got.plt都可写,那么flag前一部分就为:ctfshow{0_1_。

下面我们再来查看地址:

readelf -S pwn

在这里插入图片描述
这样我们就可以拼出flag的后一部分了:0x600ff0_0x601000}。

所以的总的flag就为:ctfshow{0_1_0x600ff0_0x601000}

pwn22

在这里插入图片描述
首先我们将pwn文件托到虚拟机然后加上可执行的权限。

接下俩我们就可以使用checksec命令来看RELRO的情况了。

chmod +x pwn
checksec pwn

在这里插入图片描述
RELRO为Full RELRO代表.got和.got.plt都不可写,那么flag前一部分就为:ctfshow{0_0_。

下面我们再来查看地址:

readelf -S pwn

在这里插入图片描述
这样我们就可以拼出flag的后一部分了:0x600fc0}。

所以的总的flag就为:ctfshow{0_0_0x600fc0}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【kubernetes】负载均衡器安装部署-Haproxy与keepalived

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

不要再用 count(*) 查询记录数了

来源 | 苏三说技术 (ID:susanSayJava) 已获得原公众号的授权转载 前言 最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助。 我们使用的数据库是Mysql8&…

【6.19】用户自己写String类会发生什么(双亲委派机制)

用户自己写一个String类会发生什么? 了解“类加载器” Java是运行在Java的虚拟机(JVM)中的。我们在IDE里编写的Java源代码先编译成.class的字节码文件,再由ClassLoader将class文件加载到JVM中执行。 JVM中有三层ClassLoader&am…

apple pc install windows 10

苹果笔记本安装window10,做个U盘启动,开机狂摁option,选择U盘,当然你最好去windows官方下个镜像,避免我前面出现提出镜像不行。另外苹果后来机器好像不能安windows了。呼呼…

GPT-3解数学题准确率升至92.5%!无需微调即可打造理科语言模型

原文:百度安全验证 【新智元导读】ChatGPT的文科脑有救了! 大型语言模型最为人诟病的缺点,除了一本正经地胡言乱语以外,估计就是「不会算数」了。 比如一个需要多步推理的复杂数学问题,语言模型通常都无法给出正确答…

很有必要更新:LightningChart.NET 10.5.1 Crack

LightningChart.NET v10.5.1版本--这个版本比SciChart 更好,更快,更强 为所有3D、Polar和Smith系列添加DataCursor功能。 2023年6月19日-10:53新版 特点 为所有3D、Polar和Smith系列启用了DataCursor功能。DataCursor允许用户浏览一个系列&#xff0…

【一起啃书】《机器学习》第十章 降维与度量学习

文章目录 第十章 降维与度量学习10.1 k k k近邻学习10.2 低维嵌入10.3 主成分分析10.3.1 定义与步骤10.3.2 最近重构性与最大可分性 10.4 核化线性降维10.5 流形学习10.6 度量学习 第十章 降维与度量学习 10.1 k k k近邻学习 k k k近邻学习是一种常用的监督学习方法&#xf…

数字图像处理实验报告(二)

报告目录 实验四、图像复原 实验五、图像压缩及编码 实验四、图像复原 一、实验目的 了解图像复原的意义和手段;熟悉图像退化成因及处理方法;通过实验了解不同图像退化模型的特点;通过本实验掌握利用MATLAB建立图像退化模型并进行复原的方…

linux CentOS7 keepalived+LVS(DR)搭建部署

目录 一、服务器准备 二、操作步骤 1.部署web服务器 2.部署LVS主备调度器 测试 部署NFS共享服务器 一、服务器准备 .准备6台虚拟机,2台做LVS主备调度器,2台做web服务器,1台做存储,1台客户机验证 1.LVS主调度器 &#xff08…

20个你应该掌握的强大而有用的正则表达式

关注“大前端私房菜”微信公众号,回复暗号【面试宝典】即可免费领取107页前端面试题。 正则表达式是一种很强大的字符串模式匹配工具。掌握常见的正则表达式可以大大提高我们在字符串操作和文本处理上的效率。 1.货币格式化 我经常需要在工作中使用到格式化的货币&…

哈希及其哈希思想的应用

1. unordered 系列关联式容器 在 C98 中, STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 $log_2 N$ ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询…

Ubuntu20.04,samba服务器搭建。

0.前言 推荐个电视剧吧,百看不厌,《雍正王朝》。 这篇博客没什么技术含量,纯粹的表现一下我的勤劳。 1.Ubuntu 安装 终端输入 $ sudo apt install samba samba-common 配置需要共享的目录 # 新建目录(自定义)&am…

CarFramework打造无缝用户体验:提升汽车信息娱乐和控制

CarFramework框架解析 CarFramework(汽车框架)是Android Automotive平台上的一个关键框架,它提供了专门针对车辆应用程序开发的功能和工具。CarFramework通过提供一组API和服务,简化了与车辆硬件和车辆特定功能的交互。 CarFram…

被ChatGPT骗了!再用ChatGPT可要小心了。

被ChatGPT戏耍的周末 1. 被ChatGPT戏耍全过程2. 拆穿ChatGPT的把戏3. AIGC与内容安全 1. 被ChatGPT戏耍全过程 电动垂直起降飞行器(eVTOL,Electric Vertical Takeoff and Landing)技术越来越成熟,为了解下相关产品我周末打开了Cha…

Android Java判断密码强度 强度显示

1,正则表达式 密码强度的正则表达式 public static final String WEAK_PATTERN "(^(?.*[0-9])(?.*[a-z])[0-9a-z]{6,18}$)|(^(?.*[0-9])(?.*[A-Z])[0-9A-Z]{6,18}$)";//全数字字母(大/小)public static final String MEDIUM_…

61、基于51单片机无线蓝牙音乐喷泉控制系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…

MySql基础教程(一):创建删除选择数据库

MySql基础教程(一):创建删除选择数据库 1、创建数据库 创建一个名为 CSDN 的数据库 CREATE DATABASE CSDN;执行成功,数据库CSDN创建成功。 2、删除数据库 删除名为 CSDN 的数据库 DROP DATABASE CSDN;执行成功,CSDN数据库删除成功。 3…

【Java技术专题】「入门到精通系列教程」零基础带你认识网络请求工具鼻祖之HttpClient开发实战指南(执行请求篇)

零基础带你认识网络请求工具鼻祖之HttpClient开发实战指南 前言HttpClient的作用HttpClient可以实现什么?HttpClient无法实现什么? HttpClient的使用基础执行请求HTTP 请求查询字符串也可以从独立的参数中来生成 HTTP 响应HTTP 实体实体类型重复实体使用…

重新审视长时间序列预测:关于线性映射的调查

摘要 近年来,长时间序列预测得到了极大的关注。虽然有各种专门的设计来捕捉时间依耐性,但以前的研究表明,与其他复杂的架构相比,单一的线性层可以实现有竞争力的预测性能。在本文中,我们彻底调查了最近提出的方法内在…