BUUCTF逆向wp CrackRTF

第一步    先查壳。32位。

第二步  进入主函数跟进main_0

分析一下

  1. 初始化和输入第一个密码
    • 使用 memset 函数将 Destination 和 String1 数组的内容清零。
    • 提示用户输入第一个密码,并将输入存储在 Destination 中。
    • 检查输入的密码长度是否为6个字符,如果不是,则打印错误信息并退出程序。
  2. 验证第一个密码的数值范围
    • 将 Destination 中的字符串转换为整数(atoi),并存储在变量 v7 中。
    • 检查 v7 是否小于100000,如果是,则退出程序。
  3. 处理和验证第一个密码
    • 将字符串 "@DBApp" 连接到 Destination 的末尾。
    • 计算处理后的字符串长度,并调用 sub_40100A 函数进行某种处理(可能是加密或哈希),处理结果存储在 String1 中。
    • 比较 String1 与一个给定的哈希值,如果匹配,则继续执行;否则,程序结束。
  4. 输入和验证第二个密码
    • 提示用户输入第二个密码,并将输入存储在 Str 中。
    • 同样检查第二个密码的长度,如果不是6个字符,打印错误信息并退出程序。
    • 将 Destination(已经添加了 "@DBApp")连接到 Str 的末尾。
    • 再次使用 memset 清空 String1,然后调用 sub_401019 函数处理 Str,处理结果存储在 String1 中。
    • 比较 String1 与另一个给定的哈希值,如果匹配,继续下一步。
  5. 最终验证
    • 调用 sub_40100F 函数对 Str 进行最终验证,如果返回值为假(0),则打印错误信息并退出程序。
    • 如果所有验证都通过,则打印结束语。

第三步    我们跟进一下这个sub_40100A,弄出第一个密钥。

查阅了相关网站  https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

编脚本解出code1

分析一下第一个脚本:找出所有100000999999之间的整数,当这些整数与 "@DBApp" 拼接后,其SHA-1哈希值包含特定子串 "6e32d094341" 时,打印出这些哈希值和原始字符串。

  1. 导入库
    • import hashlib:导入Python的 hashlib 库,这个库提供了常见的哈希函数,包括SHA-1。
  2. 设置变量
    • flag = "@DBApp":定义一个字符串变量 flag,内容为 "@DBApp"。
  3. 循环和哈希生成
    • for i in range(100000, 1000000):这个循环遍历从100000到999999的整数(包括100000,不包括1000000)。
    • code1 = str(i) + flag:将循环中的每个整数转换为字符串,并与 flag 字符串拼接。
    • x = hashlib.sha1(code1.encode()):使用SHA-1算法对 code1 字符串进行哈希处理。encode() 方法将字符串转换为字节串,因为哈希函数需要字节串输入。
    • c = x.hexdigest():获取哈希对象 x 的十六进制表示形式。
  4. 条件判断
    • if "6e32d094341" in c:检查生成的哈希值 c 中是否包含子串 "6e32d094341"。
    • 如果包含,打印出该哈希值 c 和对应的原始字符串 code1。

因为是取前六位,所以第一个密钥是:123321

第四步    我们跟进一下sub_401019,弄出第二个密钥

查阅了网站发现是MD5加密

看了大佬的wp,发现这个网站。感谢大佬提供。(第一个密文也可以放进来解出第一个密钥)

MD5免费在线解密破解_MD5在线加密-SOMD5

直接把27019e688a4e62a649fd99cadaafdb4e放入

跟之前一样取前六位,第二个密钥:~!3a@0

第五步    打开d817那个文件,输入两个密钥

得到有关word文档,flag就在里面

Flag{N0_M0re_Free_Bugs}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无 双

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值