漏洞挖掘 堆栈的溢出实践

#include <stdio.h>

#define PASSWORD "1234567"

int verify_password(char *password)

{

    int authenticated;

    char buffer[8];

    authenticated = strcmp(password,PASSWORD);

    strcpy(buffer,password);  //溢出就在这里

    return authenticated;

}

void 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 !=0)

        {

            printf("incorrect password!\n\n");

        }

        else

        {

            printf("Congratulation! You have passed the verification!\n");

            break;

        }

    }

    getchar(); 

}

在xDbg中 加载后 在strcpy(buffer,password);这句后加断点 查看ESP中的内存

发现字符串最后一个反斜杠0刚好淹没在返回值上 所以输入8个ascll字符会返回验证成功

原理图

时间: 2024-11-15 02:53:46

漏洞挖掘 堆栈的溢出实践的相关文章

践踏堆栈-缓冲区溢出漏洞

践踏堆栈-缓冲区溢出漏洞 打算写这篇文章是因为在网上看过一篇论文,讲了缓冲区溢出破坏堆栈来执行恶意程序的漏洞.该论文请见参考资料1.这篇文章会涉及一些汇编的基础知识,以及虚拟内存的一些基本概念等.当然用来调试程序的系统是linux,工具是gcc.很久没有看过汇编和C语言了,错漏之处,还请指正. 1.概要 文章标题有提到堆栈和缓冲区,那么就先来探讨下这几个名词的定义.这里的缓冲区,指的就是计算机内一块连续的内存区域,可以保存相同数据类型的多个实例.C程序员最常见的缓冲区就是字符数组了.与C语言中其

路由器漏洞挖掘方法

MIPS32架构堆栈: 和x86 架构一样,都是由高地址向低地址增长,无EBP. 进入函数调用时,把栈指针(sp)向下移动n比特,这个大小为n比特的存储空间为此函数的stack Frame. 此后栈指针不移动,只有在函数返回时,加上这个偏移量恢复现场. 由于不能随便移动栈指针,所以寄存器压栈和出栈使用偏移 A调用B,会在A 的栈顶预留一部分空间保存b的调用参数,称为参数空间. 参数传递,前4个参数通过a0-a4传递,超出的会放入参数空间. 返回地址:把返回地址直接存入$ra寄存器. 函数执行的命

小白日记35:kali渗透测试之Web渗透-手动漏洞挖掘(一)-默认安装引发的漏洞

手动漏洞挖掘 即扫描后,如何对发现的漏洞告警进行验证. #默认安装 流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格安全性的配置,经常有系统服务以最高权限运行. 漏洞类型--远程命令执行 1.phpMyadmin 安装在web服务器中的web接口,专门用来管理MySQL数据库.对于早期版本,安装后若是没有做安全配置,对敏感路径进行删除,则有可能留下安全隐患,其中最明显的为setup. a.探索PHP网站(可根据b

FTP的漏洞挖掘

FTP协议简介 漏洞挖掘手记1:DOS 原理是对FTP协议中的命令及命令参数进行脏数据替换,构造畸形FTP命令并发送给被测试FTP服务程序. 下了一个FTPFuzz,界面丑绝人寰 开启Quick 'n Easy FTP Server 开启后,做实验并没有崩溃,不能触发DOS攻击.可能和SP3有关 漏洞挖掘手记2:访问权限 在WIN7中开启CompleteFTP Server 登陆不了,新建个账户吧 FTP 目录在本地系统中的"/Home/user" 所以这这就绕过了? easyFTP

DVWA系列之16 文件包含漏洞挖掘与防御

下面我们来分析一下DVWA中文件包含漏洞的源码. 首先文件包含的主页面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代码部分: 在这段代码中,首先使用switch语句根据用户选择的安全级别,分别将low.php.medium.php.high.php赋值给变量$vulnerabilityFile,接下来使用require_once函数来包含用户所选择的页面,最后用include函数来包含变量$file. 变量$file正是来自

揭秘家用路由器0day漏洞挖掘技术——互动出版网

这篇是计算机类的优质预售推荐>>>><揭秘家用路由器0day漏洞挖掘技术> 全球第一本关于家用路由器底层安全分析的书籍! 编辑推荐 全球第一本硬件安全分析书籍,填补了硬件安全领域的空白:带领大家进入HT团队都还未涉及的领域!作者十年磨一剑之心血力作! <揭秘家用路由器0day漏洞挖掘技术>针对当下网络安全设备问题层出不穷.而系统化的安全分析资料越来越难寻的现状,从家用路由器入手,全方位的讲解了路由器漏洞分析.漏洞挖掘.路由器固件提取.硬件调试等方面的相关知识

【安全牛学习】笔记手动漏洞挖掘(三)

手动漏洞挖掘 Directory travarsal / File include(有区别/没区别) 目录权限限制不严 / 文件包含 /etc/php5/cgi/php.ini allow_url_include = on 应用程序功能操作文件,限制不严时导致访问WEB目录以外的文件 读.写文件.远程执行代码 特征但不绝对 ?page=a.php ?home=b.html ?file=content [email protected]:~$ ifconfig [email protected]:

【安全牛学习笔记】手动漏洞挖掘-SQL注入

[email protected]:~# john --format=raw-MD5 dvwa.txt [email protected]:~# cd .john/ [email protected]:~/.john# ls john.log  john.pot [email protected]:~/.john# cat john.log [email protected]:~/.john# cat john.pot [email protected]:~/.john# rm *       

【安全牛学习笔记】&#8203;手动漏洞挖掘-SQL盲注

手动漏洞挖掘-----SQL盲注 不显示数据库内建的报错信息 内建的报错信息帮助开发人员发现和修复问题 报错信息提供关于系统的大量有用信息 当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将 无法依据报错信息判断注入语句的执行结果,即 盲 思路:既然无法基于报错信息判断结果,基于逻辑真假的不同结果来判断 1'and 1=1--+ 1'and 1=2--+ select * from table_name where id='1' orderby 2--'; 课时91 手动漏洞挖