利用修改邻接变量

资源下载

【免费】突破密码认证程序(修改邻接变量)资源-CSDN文库

资源内容

源码
/*****************************************************************************To be the apostrophe which changed "Impossible" into "I'm possible"!            
POC code of chapter 2.2 in book "Vulnerability Exploit and Analysis Technique"
file name : stack_overflow_var.c
author           : failwest 
date       : 2006.9.20
description    : demo show nearby var overrun in stackinput 8 letters to bypass authentication 
Noticed         : complied with VC6.0 and build into begug version
version          : 1.0
E-mail           : failwest@gmail.com            Only for educational purposes    enjoy the fun from exploiting :)
******************************************************************************/
#include <stdio.h>
#define PASSWORD "1234567"
int verify_password (char *password)
{int authenticated;char buffer[8];// add local buffauthenticated=strcmp(password,PASSWORD);strcpy(buffer,password);//over flowed here!    return authenticated;
}
main()
{int valid_flag=0;char password[1024];while(1){printf("please input password:       ");             scanf("%s",password);            valid_flag = verify_password(password);            if(valid_flag){printf("incorrect password!\n\n");}else{printf("Congratulation! You have passed the verification!\n");break;}}
}

其实是对上一个文章的源码修改

请注意一下的两个修改

(1)verify_passowrd()函数的局部变量buffer[8]

(2)字符比较后strcpy(buffer,password)这个函数时c语言的高危函数,很容易出现栈溢出

流程

密码还是1234567

这里直接用动态调试就可以

这里是呢我那个看到分支的

直接运行一下

当我们输入的密码不正确的时候strcmp应该返回1(authenticated是1)

局部变量名

内存地址

偏移3的值

偏移2的值

偏移1的值

偏移0的值

buffer[0-3]

0x0019FB30

0x71(’q’)

0x71(’q’)

0x71(’q’)

0x71(’q’)

buffer[4-7]

0x0019fb34

NULL

0x71(’q’)

0x71(’q’)

0x71(’q’)

authenticated

0x0019FF30

0x00

0x00 0x00 0x01

接下来我们需要输入超过这个字符的字符试试能不能写进authenticated

局部变量名

内存地址

偏移3的值

偏移2的值

偏移1的值

偏移0的值

buffer

0x0019FB30

0x71(’q’)

0x71(’q’)

0x71(’q’)

0x71(’q’)

0x0019fb34

NULL

0x71(’q’)

0x71(’q’)

0x71(’q’)

authenticated覆盖前

0x0019FF30

0x00

0x00 0x00 0x01

authenticated覆盖后

0x0019FF30

0x00

0x00

0x66(‘f’)

0x64(‘d’)

已知溢出之后能修改authenticated,那我们只需将数据溢出到buffer的边界那么这段溢出数据刚好就可以将authenticated修改成0

但是

此时是-1

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

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

相关文章

【AI绘画】硬核解读Stable Diffusion(完整版) 小白必收藏!!!

手把手教你入门绘图超强的AI绘画&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 &#xff08;文末可获取&#xff09; 2022年可谓是AIGC&#xff08;AI Generated Content&#xff09;元年&#xff0c;上半年…

爱上JVM——常见问题:JVM组成(一)

1 JVM组成 1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&…

深度学习基础之《TensorFlow框架(1)—TF数据流图》

一、TensorFlow实现一个加法运算 day01_deeplearning.py import tensorflow as tfdef tensorflow_demo():"""TensorFlow的基本结构"""# TensorFlow实现加减法运算a_t tf.constant(2)b_t tf.constant(3)c_t a_t b_tprint("TensorFlow加…

Spring AOP的实现方式

AOP基本概念 Spring框架的两大核心&#xff1a;IoC和AOP AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff09; AOP是一种思想&#xff0c;是对某一类事情的集中处理 面向切面编程&#xff1a;切面就是指某一类特定的问题&#xff0c;所以AOP可…

leetcode 99场双周赛

2578. 最小和分割 - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中…

【Flink专栏 03】深入理解Flink的Watermark:实时流处理的时间概念与乱序处理

文章目录 01 基本概念02 工作原理03 优势与劣势04 核心组件05 Watermark 生成器 使用06 应用场景07 注意事项08 案例分析8.1 窗口统计数据不准8.2 水印是如何解决延迟与乱序问题&#xff1f;8.3 详细分析 09 项目实战demo9.1 pom依赖9.2 log4j2.properties配置9.3 Watermark水印…

【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——自我介绍(英文)

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 自我介绍 英文 自我介绍 英文 第一段&#xff1a; Good afternoon, dear professors, thank you for the chance to introduce myself. My name is Yan Zhen …

MTR++论文阅读

https://zhuanlan.zhihu.com/p/654070149 文章亮点&#xff1a; Dense Future Prediction for All Agent&#xff1a;将预测的结果也encode起来&#xff0c;用于平衡障碍物之间的预测结果。不过在infer的时候这一部分不会进行用数据集聚类获得query轨迹点&#xff08;goal 点&…

ChatGPT高效提问—prompt实践(白领助手)

ChatGPT高效提问—prompt实践&#xff08;白领助手&#xff09; ​ 随着社会的不断发展&#xff0c;白领的比例越来越高。白领的工作通常较为繁忙&#xff0c;需要管理复杂的项目。工作量大、要求高、任务紧急&#xff0c;时间分配不当部分可能导致工作效率低下&#xff0c;任…

力扣_字符串9—单词接龙I、II

题目 按字典 w o r d L i s t wordList wordList 完成从单词 b e g i n W o r d beginWord beginWord 到单词 e n d W o r d endWord endWord 转化&#xff0c;一个表示此过程的 转换序列 是形式上像 b e g i n W o r d − > s 1 − > s 2 − > . . . − > s …

java 泛型----T、?的使用

java中T表示泛型。&#xff1f;表示不确定的类型。 jdk使用K表示键&#xff0c;V表示值&#xff0c;T表示type类型,E表示enum枚举。这四个符号只是表示泛型名称&#xff0c;可以换成其他字母&#xff0c;但是需要在之前声明。 参考文章&#xff1a;java泛型&#xff1a;T与?的…

问题:人的安全知识和技能是天生的。() #媒体#知识分享#学习方法

问题&#xff1a;人的安全知识和技能是天生的。&#xff08;) 人的安全知识和技能是天生的。() 参考答案如图所示 问题&#xff1a;&#xff08;&#xff09;是党和国家的根本所在、命脉所在&#xff0c;是全国各族人民的利益所在、幸福所在。 A.人民当家作主 B.坚持和完善…

QT+OSG/osgEarth编译之八十七:osgdb_p3d+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_p3d)

文章目录 一、osgdb_p3d介绍二、文件分析三、pro文件四、编译实践一、osgdb_p3d介绍 P3DXML是Panda3D引擎中使用的一种文件格式,用于描述3D场景的层次结构和属性。它是一种基于XML(eXtensible Markup Language)的文本格式,可以被Panda3D引擎读取和解析。 P3DXML文件包含了…

OpenAI突然发布首款文生视频模型——Sora;谷歌发布Gemini 1.5,迈向多模态大模型新时代

&#x1f989; AI新闻 &#x1f680; OpenAI突然发布首款文生视频模型——Sora 摘要&#xff1a;OpenAI发布了首个AI视频模型Sora&#xff0c;可以根据文字指令生成神级效果的长视频&#xff0c;引发了广泛关注和震惊。 Sora模型通过深入理解语言和图像&#xff0c;能够创造出…

代码随想录算法训练营第二十七天|贪心算法理论基础,455.分发饼干,376. 摆动序列,53. 最大子序和

系列文章目录 代码随想录算法训练营第一天|数组理论基础&#xff0c;704. 二分查找&#xff0c;27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

中国电子学会2023年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

2023-12 Scratch三级真题 分数&#xff1a;100 题数&#xff1a;31 测试时长&#xff1a;60min 一、单选题(共18题&#xff0c;共50分) 1.运行左图程序&#xff0c;想得到右图中的效果&#xff0c;红色框应填写的数值是&#xff1f;&#xff08;D&#xff09;(3分) A.12 …

《合成孔径雷达成像算法与实现》Figure6.18

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

【题解】—— LeetCode一周小结6

【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结5 5.跳跃游戏 VI 题目链接&#xff1a;1696. 跳跃游戏 VI 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步&#xff0c;你最多可以往前跳 k 步&#xff0c;…

蓝桥杯电子类单片机提升三——NE555

目录 单片机资源数据包_2023 一、NE555和定时器工作模式 1.NE555的介绍 2.定时器的计数模式 二、NE555频率读取代码的实现 1.定时器0初始化 2.通过读取TH0和TL0来读取频率 3.通过中断读取频率 三、完整代码演示 通过读取TH0和TL0来读取频率 main.c 通过中断读取频…

26.执行上下文/作用域链/闭包

1. 对闭包的理解 闭包是指有权访问另一个函数作用域中变量的函数&#xff0c;创建闭包的最常见的方式就是在一个函数内创建另一个函数&#xff0c;创建的函数可以访问到当前函数的局部变量。 闭包有两个常用的用途&#xff1b; 闭包的第一个用途是使我们在函数外部能够访问到…