BUUCTF PWN wp--ciscn_2019_n_8

news2024/11/14 1:07:31

第一步  checksec一下,本题为32位。

分析一下保护机制:

一、RELRO: Partial RELRO

  • Partial RELRO 提供了一定程度的保护。在这种情况下,部分重定位表在程序启动时被设置为只读。这可以防止一些针对重定位表的攻击,比如通过篡改重定位表中的函数地址来执行恶意代码。但是,与 Full RELRO 相比,保护程度相对较弱。Full RELRO 会将整个重定位表以及全局偏移表(GOT)设置为只读,提供更全面的保护。

二、Stack: Canary found

  • 栈保护机制对于防范缓冲区溢出攻击非常重要。当函数被调用时,一个随机值(栈金丝雀值)被放置在栈上。在函数返回之前,程序会检查这个值是否被修改。如果栈金丝雀值被破坏,说明可能发生了栈缓冲区溢出,程序可以采取相应的安全措施,如立即终止程序运行,从而防止攻击者利用缓冲区溢出进一步控制程序执行流程。

三、NX: NX enabled

  • 开启 NX(No-Execute)保护意味着将内存分为可执行区域和不可执行区域。数据所在的内存区域被标记为不可执行,这样即使攻击者能够在数据区域注入恶意代码,也无法执行这些代码。增加了攻击者利用缓冲区溢出等漏洞执行任意代码的难度。

四、PIE: PIE enabled

  • PIE(Position Independent Executable)使得程序在每次运行时,其代码段和数据段在内存中的地址都是随机化的。这使得攻击者难以预测程序的内存布局,从而增加了利用内存漏洞进行攻击的难度。例如,攻击者通常需要知道特定函数或数据的地址才能进行攻击,但在 PIE 启用的情况下,这些地址在每次程序运行时都可能不同。

第二步   进入主函数,发现关键字眼/bin/sh,我们分析一下含bin的这部分代码

  • *(_QWORD *)&var[13]:
    • _QWORD 是一个类型定义,通常表示一个64位的无符号整数(在64位系统上)。
    • &var[13] 是取数组 var 第14个元素的地址(因为数组索引是从0开始的)。
    • (_QWORD *)&var[13] 是将 var[13] 的地址转换为 _QWORD 类型的指针。
    • *(_QWORD *)&var[13] 是解引用这个指针,从而获取 var[13] 到 var[13+7](因为一个 _QWORD 是8字节)这一段内存表示的64位值。
  • if ( *(_QWORD *)&var[13] ):
    • 这个条件判断是检查 var[13] 到 var[13+7] 这8个字节组成的64位值是否不为0。如果这个值不为0,则进入下面的代码块。
  • if ( *(_QWORD *)&var[13] == 17LL ):
    • 在第一个条件成立的基础上,这个判断是检查这8个字节组成的64位值是否等于17(17LL 表示17的long long类型,即64位整型)。
    • 如果这个值确实等于17,那么将执行 system("/bin/sh");。

由于这里是var[13]=17LL,而var数组可以覆盖到了var[15]如图

第三步  编写脚本

为什么乘以14,因为,数组13是第14位(下表为零开始)

运行成功

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

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

相关文章

Elasticsearch 介绍

1、课程介绍 1.1 ES 8.x 演化进程 版本号发布日期多少个次要版本迭代历时8.02022年2月11日?至今7.02019年4月11日17个次要版本34个月6.02017年11月15日8个次要版本17个月5.02016年10月27日6个次要版本13个月 2、Elasticsearch 是什么 2.1 概念 2.1.1 标准定义 …

QLineEdit中文本显示不全,部分字符显示空白问题

环境 QT5.14.2 Windows 7 现象 触发某个条件后,使用QLineEdit的setText方法设置文本后,文本部分字符缺失,现象如下(小数点后都是4位): 解决办法 设置根据显示器的像素密度进行自动缩放;再主…

VMware启动报错-Intel VT-x处于禁用状态,进入BIOS更改CPU设置

问题描述 VMware启动虚拟机失败,报错显示Intel VT-x处于禁用状态。 原因分析 打开主机的任务管理器,找到CPU,发现虚拟化处于禁用状态,查阅资料之后发现,进入BIOS模式将CPU虚拟化禁用开启即可解决。 解决步骤 1、…

KAN 学习 Day1 —— 模型框架解析及 HelloKAN

说明 最近了解到了一个新东西——KAN,我的毕设导师给推荐的船新框架。我看过很多剖析其原理的文章,发现大家对其持有的观点都各不相同,有的说可以颠覆传统MLP,有的说可以和Transformer同等地位,但是也有人说它训练速度…

15chatGLM3半精度微调

1 模型准备 数据依然使用之前的数据,但是模型部分我们使用chatglb-3,该模型大小6B,如果微调的话需要24*4 96GB,硬件要求很高,那么我们使用半精度微调策略进行调试,半精度微调有很多坑啊,注意别踩到…

只会SQL语句,可以做什么工作?

1、SQL是什么 首先简单介绍一下SQL(Structured Query Language),是一种可以进行数据提取、聚合、分析,并对数据库进行构建和修改的编程语言。 相对来说,SQL上手非常容易,因为语法结构比较固定&#xff0c…

第一性原理计算从定义到场景到硬件配置详细讲解

第一性原理计算,又称为从头计算(The Ab initio Calculation),是一种基于量子力学原理,通过计算机模拟来预测材料、分子、固体等体系性质的方法。这种方法的核心思想是不依赖于实验数据或经验参数,而是直接从…

如何纯手动的创建SpringBoot工程?

1、打开项目结构 2、new 一个新模块 3、所需全部选配好 4、 创建好之后,目录如下 5、在pom文件中,做第一件事情(让当前的工程继承一个父工程) (这是一个固定的写法:spring-boot-starter-parent)…

JavaWeb - Maven

Maven apache旗下的一个来源项目,一款用于管理和构建java项目的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。 作用 安装 解压官网下载的压缩包 配置本地仓库,修改conf/se…

接口请求400

接口请求400 在Web开发中,接口请求错误是开发者经常遇到的问题之一。其中,400错误(Bad Request)尤为常见,它表明发送到服务器的请求有误或不能被服务器理解。本文将深入探讨接口请求400错误,从常见报错问题…

springcloud微服务入门

1.架构的演变 目前我们接触的比较多的是单体架构,指的是将所有功能集中在一个项目中开发,打成一个包部署。 这样的架构优点在于,架构简单,把各个功能集中在一起方便操作管理,部署成本也比较低但是缺点也是很明显&#…

让AI给你写代码(10.1): 按接口编程的思想,统一利用内部和外部的接口,逐步扩展和提升AI编程能力

先总结一下AI编程小助手已具备的能力,目前AI小助手已经可以利用本地知识库和在线大模型(我们用的是qwen)生成可测试,可执行代码的能力(具体流程参考从让AI给你写代码(9.1))&#xff…

※※Leetcode Hot 100刷题记录 -Day8(和为k的子数组)

问题描述: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入&#xff1a…

java开发面试:AOT有什么优缺点/适用于什么场景/AOT和JIT的对比、逃逸分析和对象存储在堆上的关系、高并发中的集合有哪些问题

JDK9引入了AOT编译模式。 AOT 有什么优点?适用于什么场景? JDK 9 引入了一种新的编译模式 AOT(Ahead of Time Compilation) 。 和 JIT 不同的是,这种编译模式会在程序被执行前就将其编译成机器码,属于静态编译(C、 C…

【Redis详解】Redis安装+主从复制+哨兵模式+Redis Cluster

目录 一、Redis简介 1.1 关系型数据库和NoSQL数据库 二、Redis安装 2.1 rpm 安装 2.2 源码安装 三、Redis基本操作 四、Redis主从复制 4.1 配置主从同步 4.2 主从同步过程 五、Redis高可用--哨兵模式 5.1 哨兵的实验过程 六、数据保留 七、Redis Cluster 7.1 部署…

【办公软件】Excel如何开n次方根

在文章:【分立元件】电阻的基础知识中我们学习电阻值、电阻值容差标注相关标准。知道了标准将电阻值标准数列化。因此电阻值并非1Ω、2Ω、3Ω那样的整数,而是2.2Ω、4.7Ω那样的小数。 这是因为电阻值以标准数(E系列)为准。系列的“E”是Exponent(指数)…

鸿蒙开发占多列的瀑布流

鸿蒙开发占多列的瀑布流 正常样式的瀑布流没什么好说,大家看下官方文档应该都写得来。关键是有些item要占多列,整行的效果 先看下效果图: 还有底部的效果图的,就不放了,你们应该也看得懂的 思路: 关键在…

libtorch---day04[MNIST数据集]

参考pytorch。 数据集读取 MNIST数据集是一个广泛使用的手写数字识别数据集,包含 60,000张训练图像和10,000张测试图像。每张图像是一个 28 28 28\times 28 2828像素的灰度图像,标签是一个 0到9之间的数字,表示图像中的手写数字。 MNIST …

使用Aqua进行WebUI测试(Pytest)——介绍篇(附汉化教程)

一、在创建时选择Selenium with Pytest 如果选择的是Selenium,则只能选择Java类语言 选择selenium with Pytest,则可以选择Python类语言 Environment 其中的【Environment】可选New 和 Existing New :选择这个选项意味着你希望工具为你创…

常用企业技术架构开发速查工具列表

对于Java开发者来说,不光要关注业务代码也要注重架构的修炼。日常用到的工具组件都是我们架构中重要的元素,服务于应用系统。我们应该选择适合应用体量的架构避免过度设计,最简单的方式就是矩阵方式去分析每个组件的适用场景优缺点,从而综合评估做好决策。 程序员大多数时间…