BUUCTF-CRACKRTF

查壳

 ida 打开

先看第一部分

进入被hash加密那部分(当然一开始是不知道的,后面知道函数后改的注释,正确应该是进行了一些处理

百度一下把这些不知道的函数百度出来

这是一个hash加密

这里是关于cryptcreatehash的信息

看标识 ALG_ID

这里的参数是0x8004

在官方提供的文档中是 sha1 的加密

然后用 python 提供的hashlib模块进行解密

下面是例子

import hashlib

# 定义要哈希的字符串

string = "Hello, world!"

# 创建 SHA-1 对象

sha1_hash = hashlib.sha1()

# 更新哈希对象,传入要哈希的字节数据

sha1_hash.update(string.encode("utf-8"))

# 获取 SHA-1 哈希值的十六进制表示

result_sha1 = sha1_hash.hexdigest()

print("SHA-1 哈希值:", result_sha1)

下面是脚本

脚本有很多不同我会进行逐步分析

import hashlib

string = '@DBApp'

for i in range(100000, 999999):

    flag = str(i) + string

    x = hashlib.sha1(flag.encode("utf8"))

    y = x.hexdigest()

    if "6e32d0943418c2c33385bc35a1470250dd8923a9" == y:

        print(flag)

        break

这是脚本

123321@DBApp

这是结果

这么写的原因首先前面的条件是相等才会继续

100000,999999 是因为不能小于100000

所以设置一个很大范围

因为不知道具体数据但是知道一个范围,直接设置一个很大的范围进行比对

这是与原本hashlib sha1脚本的区别

然后可以看第二部分

老样子进入sub_401019看看

这次前面并没有提供范围,但还是需要对里面进行分析

看参数

这次是0x8003

官方文档给的是md5加密

没有范围就直接扔进md5加密试试看

发现前面就是第二部分的密码

很多网站上md5解出来都是错的我感觉有些奇怪

依此把密码输入在程序

自动给了一个文件

里面就是flag

还有第二种解法,不过待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值