首页 > 其他分享 >0day安全:软件漏洞技术分析-Crack小实验

0day安全:软件漏洞技术分析-Crack小实验

时间:2022-10-12 19:00:19浏览次数:49  
标签:exe 0day 跳转 漏洞 地址 指令 偏移 Crack password

Crack小实验

#include<stdio.h>
#define PASSWORD "1234567"

int verify_password (char *password)
{
	int authenticated;
	authenticated = strcmp(password,PASSWORD);	//strcmp比较两个字符,若相等返回0
	return authenticated; 
 } 
 int 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\n");
			break;
		}
	 }
	 return 0;
 }

IDA静态反汇编

  • 将编译的.exe用IDA打开,IDA就会把二进制文件翻译成质量上乘的反汇编代码

  • 按下空格键会显示类似函数的流程图

  • 选中程序的分支点,也就是C代码的if语句,按空格键切换到汇编指令界面
  • VA(虚拟内存地址)=RVA(相对虚拟地址) — Image Base(映射基址)
  • 可以看到这条指令位于PE文件的.text节,VA:00401578

OllyDbg动态调式

  • 注意32位或者64位的程序,要对应版本进行调式
  • 将.exe文件用ollydbg打开,使用快捷键ctrl+g搜索由IDA分析出来的VA(虚拟内存地址)

  • 选中这条指令按F2设置断点,成功后指令会被标记成不同颜色,按下F9让程序运行。进入程序输入错误密码,回车确认后,ollydbg会重新中断程序,收回控制权

  • 密码验证函数的返回值会存在EAX寄存器中,if语句通过以下指令实现

mov     [esp+41Ch], eax					//将eax寄存器的值放入[esp+41Ch]内存地址中,eax32位寄存器
cmp     dword ptr [esp+41Ch], 0			//将[esp+41Ch]内存地址的双字型数据和0进行比较
je      short loc_401588			   //如若等于0跳转到密码确认流程,非0不跳转,执行密码重输流程
  • 如果我们将je这条指令修改位jnz(非0则跳转),那么整个程序的逻辑就会放过来,输入错误的密码会被确认,输入正确的密码反而要求1重新输入,双击这条指令,修改成jnz,点击"Assembly",确认修改,写入内存。会发现原来的机器指令74变为75,jump is taken提示跳转将要发生。

LordPE

  • 将.exe用LordPE打开,查看PE文件的节信息,求出跳转指令在文件的偏移地址

  • 用 相对虚拟内存地址 减 文件偏移地址 得到 节偏移地址
  • 计算指令偏移地址等于之前得到相对偏移地址减去映射地址(exe的映射地址默认是0x00400000)再减去节偏移地址
文件偏移地址 = 相对偏移地址 - 装载基址 - 节偏移地址
		   = 0x00401578 - 0x00400000 - (0x00001000 - 0x0000400)
		   = 0x978
  • 计算得到这条指令在距离文件开始处的978h,用16进制编辑器进行修改

Hex Workshop

  • 将.exe文件用hex wordshop打开,ctrl+g搜索978(16进制),将值74(JE)修改为75(JNZ),保存后重新运行可执行文件(可能会将.exe变成.bak文件,将.bak后缀修改为.exe运行即可)

  • 运行结果如下,当输入正确密码"1234567"后,反而会被提示错误

标签:exe,0day,跳转,漏洞,地址,指令,偏移,Crack,password
From: https://www.cnblogs.com/xtriver/p/16785597.html

相关文章

  • IIS 绿盟检测到HOST头攻击漏洞的解决:web应用使用SERVER_NAME而非host header。
    来源:https://blog.csdn.net/fightingintherain/article/details/1256648851、漏洞描述2、修复方案(IIS服务端) 1)下载安装url重写工具(官网URLRewrite:TheOfficial......
  • nacos未授权访问漏洞复现
    nacos未授权访问漏洞复现一、漏洞介绍Nacos是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现......
  • 软件整理:漏洞扫描神器合集
    ​1、APPScan漏扫神器https://pan.baidu.com/s/1NxyLVeW_eEBiCUW5Q8_1kw?pwd=xgbn2、AWVS8、AWVS9、AWVS10、AWVS11下载https://github.com/mafutian/software/tree/master/......
  • ETCD 未授权访问漏洞-添加iptables规则修复方法
    ⻛险提⽰1.在iptables规则配置正确的情况下,可以规避未认证的漏洞;2.如变更过程中误操作限制了其他端⼝的情况下可能会造成存储异常;影响版本所有版本问题描述:客⼾采......
  • ThinkPHP6.0.13反序列化漏洞分析
    1. 前言最近有点闲下来了,不找点事干比较难受,打算找点漏洞分析一下,于是就打算看看TP的一些漏洞,ThinkPHP6.0.13是TP的最新版,八月份有师傅提交了一个issue指出TP存在反序列......
  • AppWeb认证绕过漏洞(CVE-2018-8715)[未成功]
    AppWeb是EmbedthisSoftwareLLC公司负责开发维护的一个基于GPL开源协议的嵌入式WebServer。他使用C/C++来编写,能够运行在几乎先进所有流行的操作系统上。当然他最主要的......
  • Hashicorp Consul Service API远程命令执行漏洞
    Preface简介Consul是HashiCorp公司推出的一款开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案相比,Consul提供的方案更为“一站式”。Con......
  • ActiveMQ任意文件写入漏洞(CVE-2016-3088)
    搭建及运行漏洞环境:```docker-composebuilddocker-composeup-d```环境监听61616端口和8161端口,其中8161为web控制台端口,本漏洞就出现在web控制台中。访问`http://you......
  • 漏洞修复:tomcat中间件修复 检测到目标URL存在http host头攻击漏洞
    漏洞名称:检测到目标URL存在httphost头攻击漏洞风险级别:中危修复方案:修改tomcat\conf\server.xml打开server.xml配置文件,找到如下配置:  将Host里name的值localhost......
  • Exchange零日漏洞缓解措施
    点开参考文档注:此文章只是记录,使用前要根据自己的生产环境是否可用该方式。下面的处理方法会影响autodiscover自动发现配置邮箱。如图打开IIS双击打开URL重写模块......