CTFshow-PWN-前置基础(pwn20)

提交ctfshow{【.got表与.got.plt是否可写(可写为1,不可写为0)】,【.got的地址】,【.got.plt的地址】

前置基础知识: 

.got 和 .got.plt 是 ELF(Executable and Linkable Format,可执行和可链接格式)二进制文件中的两个重要部分,用于实现动态链接和延迟绑定(lazy binding)。

.got 表(Global Offset Table,全局偏移表):
.got 表是一个在程序加载时由动态链接器填充的表,包含了程序中所有需要在运行时动态解析的全局变量和函数的地址。这些地址最初是未知的,直到程序在内存中加载并开始执行时才会被解析和填充。当程序第一次执行到一个全局变量或者函数时,动态链接器会通过查找该符号的地址并将其写入 .got 表中,这样下次再次访问这个符号时就不需要再次查找。
.got.plt 表(Procedure Linkage Table,过程链接表):
.got.plt 表是在程序中用于实现延迟绑定的一种数据结构,用于处理程序中对动态链接库函数的调用。当程序第一次调用一个动态链接库中的函数时,其对应的入口地址会被写入到 .got.plt 表中。然后,动态链接器会跳转到 PLT 中的相应入口,执行一系列指令,最终将函数的实际地址写入 .got.plt 表中,并跳转到该地址执行函数。下次再调用这个函数时,程序会直接跳转到 .got.plt 表中存储的函数地址,而不需要再次执行 PLT 中的指令序列。

加上可执行权限后直接执行程序:

提示:What is RELRO protection ?

我们需要先知道什么是 RELRO 保护:

RELRO(RELocation Read-Only)保护是一种针对二进制可执行文件的安全性措施,用于防止针对程序中全局偏移表(GOT)和程序加载时动态链接器(LD)的攻击,确保全局偏移表(GOT)和过程链接表(PLT)在程序加载后被设为只读,从而使得攻击者无法修改这些表以执行恶意代码注入或覆盖函数指针等攻击。

RELRO 的几种常见类型:

1、NO RELRO:这种状态下 GOT 和 PLT 都是可写的。

.got 与 .got.plt 都可写。

2、Partial RELRO:将全局偏移表(GOT)的非空项设为只读,而对于空项则保持可写。

.got 不可写而 .got.plt 可写。

3、Full RELRO:在程序加载后将全局偏移表(GOT)和过程链接表(PLT)的所有项都设置为只读,即使这些项为空。任何对这些表的修改都会导致程序异常终止。

.got 与 .got.plt 都不可写。

下载题目附件检查:

64 位程序,开了 NX 保护,RELRO 保护未开,则 .got 表与 .got.plt 表都可写。

因此 ctfshow{1_1_

readelf -S pwn

readelf 是一个用于显示 ELF 格式文件信息的工具,而 -S 选项用于显示 ELF (Executable and Linkable Format,可执行和可链接格式)文件中的节表(section headers)信息,节表包含了关于 ELF 文件中每个节的详细信息,例如节的名称、偏移、大小、对齐方式等。

找到这两个表的地址:0x600f18 和 0x600f28

因此 flag:ctfshow{1_1_0x600f18_0x600f28}

在 ida 里面也可以看到这两个表的:

可以看出 .got 和 .got.plt 这两个段在内存中的地址分别为 0x600F18 和 0x600F28。这两个段的内存地址是由汇编语言中的 org 指令指定的,分别为 0x600F18 和 0x600F28。 

测试 .got 和 .got.plt 是否都可写:

验证成功,都是可写的

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

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

相关文章

(四)qt中使用ffmpeg播放视频,可暂停恢复

一、在qt中添加ffmpeg库及头文件 INCLUDEPATH /usr/local/ffmpeg/include LIBS -L/usr/local/lib -lavutil -lavcodec -lavformat -lswscale 二、详细代码 FFempegVideoDecode 视频解码类(放入线程中) ffmpegvideodecode.h #ifndef FFMPEGVIDEODE…

Qt | 自定义事件第三节

Qt | 事件第一节Qt | 事件第二节书接上回 六、自定义事件与事件的发送 1、发送事件由以下两个函数完成 static void QCoreApplication::postEvent (QObject* receiver, QEvent* event, int priority=Qt::NormalEventPriority);

RHCE作业二

一.配置server主机要求如下: 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为: 172.25.254.100 3.server主机的时间为1984-11-11 11:11:11 4.配置server主机的时间同步服务要求可以被所有人使用 二.设定cli…

C++高级特性:可变长模板参数和折叠表达式(八)

1、可变长参数模板 可变长参数是C类模板编程中非常重要的一个东西,也是C11引入的新特性,通过使用…来表示参数长度不固定 可以通过sizeof…(args)获取传入参数的个数数量 &&表示万能引用,需要注意的是如果不使用万能引用&#xff0…

JVM基础面试题第一篇

目录 内存区域面试与分析 1.运行时数据区是什么 2.Java虚拟机栈的作用 3.本地方法栈的作用 4.堆的作用 5.方法区作用 6.运行时常量池的作用 7.直接内存是什么 8.内存溢出和内存泄漏的区别 9.栈溢出的原因 10.方法区溢出的原因 垃圾回收器与内存分配策略-面试与分析 …

LeetCode 49.字母异位词分组

目录 题目描述 方法一 思路: 代码: 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", &qu…

Http 请求偶发400错误

1. 背景 生产环境偶发400请求错误,发生概率万分之一,异常信息如下: 1) 从异常信息可以看到,skywalking的sw8 header解析失效导致异常信息。 2) 0x0d0x0a 作为回车换行符号,没有被正确处理&#…

OpenGL:图元

OpenGL的图元 点 GL_POINTS: 将顶点绘制成单个的点 线 GL_LINES:将顶点用于创建线段,2个点成为一条单独的线段。如果顶点个数是奇数,则忽略最后一个。 顶点:v0, v1, v2, v3, … , vn,线段:v0-v1, v2-v3, v4-v5, … , vn-1 - vn GL_LINE_STRIP:将顶点用于创建线段,…

谈谈Python中的分布式计算和大数据处理

谈谈Python中的分布式计算和大数据处理 Python作为一种通用、解释型的高级编程语言,因其简洁易读、强大的库支持和广泛的应用领域,近年来在分布式计算和大数据处理领域也获得了显著的关注和应用。 分布式计算是一种计算方法,它将大型问题划…

学习笔记(4月18日)vector底层模拟实现(1)

1.迭代器 vector实际上是由迭代器进行维护的,关于迭代器是什么,为什么要叫这个名字,后面的学习会逐渐了解,现在先将迭代器是作为指针即可。 vector底层有三个迭代器,用来起到容量、数组头、元素个数的作用。 同时为…

带头节点的单链表练习(写加注释花了5小时,已废)

目录 1.test.c 2.LinList.c 3.LinList.h 1.test.c 单链表的操作 #include "LinList.h" //head->a0(头节点)->a1->...->ai->...->an int main() {SLNode* head;int i;DataType x, y;ListInitiate(&head);//初始化链表for (i 1; i < 11;…

基于XML配置bean(一)

文章目录 1.获取bean的两种方式1.通过id获取bean&#xff08;前面用过&#xff09;2.通过类型获取bean&#xff08;单例时使用&#xff09;1.案例2.代码1.beans.xml2.SpringBeanTest.java3.结果 3.注意事项 2.三种基本依赖注入方式1.通过属性配置bean&#xff08;前面用过&…

DDoS攻击趋势分析及防御建议:网络安全新挑战与应对策略

在数字化日益普及的今天&#xff0c;网络安全问题日益凸显。其中&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击以其巨大的破坏力和难以防范的特性&#xff0c;发起简单、效果显著、难以追踪等特点&#xff0c;因此被黑客广泛使用&#xff0c;已经成为网络安全领…

Python(九十四)变量的作用域

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

CSS 设置空格原样显示 white-space:pre-wrap;

CSS 设置空格原样显示 问题描述 html 渲染内容时&#xff0c;对于 空格、回车、Tab 键的 默认处理方式是 &#xff1a; 无论存在多少个连续的空格&#xff0c;都只会保留一个。 结论 由于以上的特性&#xff0c;导致了我们无法直接渲染出原格式的文本。pre 标签 了解一下 &…

element-plus中的图标和文字水平对齐

<span><el-icon size"14px"><Delete /></el-icon> <span>删除</span> </span>解决方法&#xff1a;加上vertical-align: middle样式就可以了 <span><el-icon size"14px" style"vertical-align: …

【STM32CubeIDE 1.15.0】汉化包带路径配置过程

一、IDE软件下载 二、汉化版包路径 三、IDE软件板载汉化包 一、IDE软件下载 ST官网IDE下载链接 二、汉化版包路径 https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/ 找不到就到.cn后面一级一级进 三、IDE软件板载汉化包 https://mirrors.ustc.edu…

数据库工具解析之 OceanBase 数据库导出工具

背景 大多数的数据库都配备了自己研发的导入导出工具&#xff0c;对于不同的使用者来说&#xff0c;这些工具能够发挥不一样的作用。例如&#xff1a;DBA可以使用导数工具进行逻辑备份恢复&#xff0c;开发者可以使用导数工具完成系统间的数据交换。这篇文章主要是为OceanBase…

​波士顿动力发布全新人形机器人:Atlas

4月16日&#xff0c;波士顿动力&#xff08;Boston Dynamics&#xff09;发布了《再见&#xff0c;液压Atlas》视频&#xff0c;正式宣告其研发的液压驱动双足人形机器人Atlas退役。 在视频的结尾&#xff0c;Atlas深深鞠躬&#xff0c;之后还有一句话“直到我们再次相遇&…

第十六届“华中杯”大学生数学建模挑战赛A题思路

A题 太阳能路灯光伏板的朝向设计问题 太阳能路灯由太阳能电池板组件部分(包括支架)、LED 灯头、控制箱(包含控制器、蓄电池)、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。太阳能电池板也叫光伏板, 它利用光伏效应接收太阳辐射能并转化为电能输出,…