re学习笔记(54)BUUCTF-re-[GWCTF 2019]re3 SMC自修改代码 | AES加密

推荐肉丝r0ysue课程(包含安卓逆向与js逆向):
https://i-blog.csdnimg.cn/blog_migrate/eb1155e1fa99b3eb95edf8cee74866b8.png
新手一枚,如有错误(不足)请指正,谢谢!!
个人博客:点击进入/点击进入
题目链接:[GWCTF 2019]re3
参考资料:

IDA64载入,shift+f12查找关键字,找到main函数。
在这里插入图片描述
此时sub_402219处是一堆无用数据
在这里插入图片描述
写idc脚本进行解密

#include <idc.idc>

static main()
{
    auto addr = 0x402219;
    auto i = 0;
    for(i=0;i<224;i++)
    {
        PatchByte(addr+i,Byte(addr+i)^0x99);
    }
}

然后强制分析数据成代码(选择Force)
在这里插入图片描述
在这里插入图片描述
全部选中摁P将其声明成函数
此时就可以F5伪代码查看了。。
使用Findcrypt插件查看一下加密算法……好多
在这里插入图片描述
看main函数里的sub_40207B()函数
在这里插入图片描述
一大堆忽悠人的MD5加密,,也就第10行和14行的MD5加密有用
大体是将base64密码表进行两次sub_401CF9加密然后赋值给参数a1
这里没有用到用户输入,可以动调一下获得加密后的a1
IDA先在sub_40207B()函数执行后一条下断点
在这里插入图片描述
IDA远程调试运行,被断下来之后,双击跟进,获取到unk_603170
在这里插入图片描述
提取出来,加密后的a1也就是unk_603170为

CB8D493521B47A4CC1AE7E62229266

然后看main函数里的sub_402219函数。
在这里插入图片描述
加密后的密文为

BC0AADC0147C5ECCE0B140BC9C51D52B46B2B9434DE5324BAD7FB4B39CDB4B5B

其中sub_40196E函数
在这里插入图片描述

大体流程

  1. 经过MD5加密得到AES ECB模式的 密钥(可动调提取)
  2. 然后将32位的输入分成两部分,进行AES128加密
  3. 最后与密文进行比较

写脚本

from Crypto.Cipher import AES
from Crypto.Util.number import *
key = long_to_bytes(0xcb8d493521b47a4cc1ae7e62229266ce)
mi = long_to_bytes(0xbc0aadc0147c5ecce0b140bc9c51d52b46b2b9434de5324bad7fb4b39cdb4b5b)
lun = AES.new(key, mode=AES.MODE_ECB)
flag = lun.decrypt(mi)
print(flag)

在这里插入图片描述

得到最终flag为flag{924a9ab2163d390410d0a1f670}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Forgo7ten

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

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

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

打赏作者

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

抵扣说明:

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

余额充值