上次我们构造了一个漏洞,但是不能输入自己想要的字符,所以这次我们另外构造一个漏洞,使用文件的方式读入数据,这样便可以输入我们想要的字符。

这样,我们的目标还是上次那个,绕过验证。

 1 // stack_overflow.cpp : Defines the entry point for the console application.
 2  //
 3
 4  #include "stdafx.h"
 5  #define  PASSWORD "1234567"
 6
 7  int verify_password(char *password)
 8  {
 9      int authenticated;
10      char buffer[8];
11      authenticated = strcmp(password,PASSWORD);
12      strcpy(buffer,password);                     //溢出位置
13      return authenticated;
14  }
15
16  void main()
17  {
18      int valid_flag = 0;
19      char password[1024];
20      FILE* fp;
21      if (!(fp = fopen("D:\\password.txt","rw+")))
22      {
23          exit(0);
24      }
25      fscanf(fp,"%s",password);
26      valid_flag = verify_password(password);
27      if (valid_flag)
28      {
29          printf("incorrect password!\n\n");
30      }
31      else
32      {
33          printf("Congratulation!You have passed the verification!\n");
34      }
35      fclose(fp);
36  }
37  

当然,还有这个

1 #include <stdio.h>
2  #include <string.h>
3  #include <stdlib.h>

先找到我们要覆盖的地址:

0012FB24   00401104  返回到 stack_ov.main+74 来自 stack_ov.00401005

我们找到成功后指向的位置

0040111F  |> \68 28604200   push    00426028   ; /format = "Congratulation!You have passed the verification!",LF,""
00401124  |.  E8 F7020000   call    printf     ; \printf

也就是说,要把0012FB24处的00401104覆盖成0040111F。

构造文件内容如下

这样即可验证所需的长度和需要修改的位置。

重新构造的文件

执行后

返回地址就被覆盖了,也就是说,执行完verify_password这个函数后,返回到0040111F处(原本的位置被覆盖了)。

终于成功的绕过了验证,直接达到结果处。由于利用后堆栈出现了不平衡,所以会出现错误,后面我们会想办法解决这个问题。

工程文件:http://files.cnblogs.com/tk091/stack_overflow.rar

感谢宝哥的大力支持。

转载于:https://www.cnblogs.com/tk091/archive/2012/10/06/2713310.html

人为漏洞的构造、文件的载入、验证机制的突破相关推荐

  1. oauth最后的确认按钮_绕过GitHub的OAuth授权验证机制($25000)

    这几年来,信息安全研究一直是我的业余爱好,虽然有很多人专职做漏洞众测以获得奖励,但对我个人来说,我只对一些感兴趣的项目投入不多的时间去深入研究.今年,我想看看自己是否是全职漏洞赏金猎人的料,所以就从6 ...

  2. 用C#实现pdf文件的完整性验证

    现在对文件的完整性验证,防止文件被篡改的技术已经比较成熟,一般使用数字签名,数字水印等,最近我在一个项目中也遇到了防篡改的需求.该项目要求用户将原始发票用专门的扫描程序扫描成pdf文件,然后将该pdf ...

  3. 【文件上传漏洞-01】文件上传漏洞概述、防御以及WebShell基础知识补充

    目录 1 文件上传漏洞概述 2 文件上传漏洞防御.绕过.利用 2.1 黑白名单策略 3 WebShell基础知识补充 3.1 WebShell概述 3.2 大马与小马 1 文件上传漏洞概述 概述:文件 ...

  4. Keras学习笔记---保存model文件和载入model文件

    Keras学习笔记---保存model文件和载入model文件 保存keras的model文件和载入keras文件的方法有很多.现在分别列出,以便后面查询. keras中的模型主要包括model和we ...

  5. 逻辑漏洞——验证机制问题

    普吉应用系统验证机制的脆弱点以及验证机制中的设计缺陷.执行缺陷 验证机制 身份验证是核心防御机制中最薄弱的环节,身份验证机制也是攻击者的主要攻击目标之一. 验证机制是应用程序防御恶意攻击的中心机制.它 ...

  6. eclipse加速之禁用JS、jsp等文件的语法验证

    eclipse加速之禁用JS.jsp等文件的语法验证 去除eclipse的JS验证: 将windows->preference->Java Script->Validator-> ...

  7. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  8. 【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

    文件包含漏洞的利用 读取敏感文件 我们可以利用文件包含漏洞读取任意文件,读取文件的时候有利用条件 目标主机文件存在(目标文件的路径.绝对路径.相对路径) 具有文件可读权限 提交参数http://loc ...

  9. 初识VB(一)——浏览文件并载入外部…

    载入外部文本文件 Dim strfilename As String Dim nfilenum As Long Dim strall As String Dim strline As String s ...

最新文章

  1. 近段时间学习html和CSS的一些细碎总结
  2. 计算机培训学校办学宗旨,西安软件科技培训学院简介
  3. 时域和频域变换之---傅里叶级数的数学推导
  4. Python正则表达式之编译正则表达式(2)
  5. Linux中以单容器部署Nginx+ASP.NET Core
  6. 【设计模式】第一章 面向对象六大原则
  7. BP神经网络算法学习及代码实现(含Python源码)
  8. Solidity学习教程
  9. 变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计
  10. 别让手机偷走你的大半生
  11. 去除最新版WinRAR的弹窗广告
  12. PECompact 2.79 Beta D by Sonny27
  13. 《迅雷链精品课》第七课:以太坊数据存储分析
  14. 64位系统,定义int* a[2][3],占几个字节?
  15. 教师薪金matlab,数学建模教师薪金问题.doc
  16. PMP项目管理五大过程组
  17. 蓝桥杯2016初赛python题解
  18. 静态库与动态库之间的区别
  19. VOT-toolkit Python 版本使用教程--官方样例版
  20. logic原理图板框制作

热门文章

  1. 让目标检测和实例分割互相帮助,地平线实习生论文被AAAI 2020收录
  2. Python爬虫中最重要、最常见、一定要熟练掌握的库
  3. 次世代游戏设计的相关介绍
  4. 计算机视觉论文-2021-06-22
  5. 计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN
  6. 腾讯优图、AI Lab招聘计算机视觉算法工程师
  7. RoI Pooling 系列方法介绍(文末附源码)
  8. win7旗舰版+caffe+vs2013+matlab2014b(无GPU版)
  9. 使用交叉存取得到更快推荐算法
  10. 复练-软考网规-IDS和IPS概念、分类、评价标准