栈溢出绕过验证
2021/12/10 23:48:51
本文主要是介绍栈溢出绕过验证,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
栈溢出绕过验证
自己动手通过反汇编分析的一个栈溢出的案例。
1.程序代码
/***************************************************************************** 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 stack input 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 buff authenticated=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; } } }
2.分析过程
- 利用OllyDbg打开已经编译好的stack_overflow_var.exe程序
- 找到main函数入口。从GetCommandLineA往下数,第5个Call一般就是程序入口点的Call,F7进入。
- 一路F8,输入字符串12345678,然后往下几步到verify_password函数入口
- 进入verify_password函数,函数栈帧如下图所示
- 继续往下执行,下图为strcmp函数入口地址,以及结果保存位置,局部变量的第一个位置
- 下图中0019FAD0为栈中第一个位置保存的为strcmp结果,为1
- 继续往下执行,来到strcpy函数入口
- 0019FAD0处原本保存的是strcmp结果1,执行完strcpy函数后值被覆盖为0,如下图
- 行完verify_password后,返回到main函数中继续执行,判断strcmp的结果为0,成功绕过验证
over!
这篇关于栈溢出绕过验证的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南