ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[GWCTF 2019]re3

2022-01-26 22:03:35  阅读:205  来源: 互联网

标签:AES 加密 函数 re3 flag 603170 GWCTF 2019 unk


终于找到远程动调 ELF 失败的原因了,补一下之前的题目

64 位 ELF,载入 IDA,查看主函数

mprotect 是一种保护函数,不做重点分析,观察到 sub_402219 函数既作为数据参与异或,又作为函数来引用,猜测异或完后,这个函数才是它真正的样子,所以找到这段函数的地址

看到一大坨数据,使用 IDC 脚本还原数据

运行完后得到

全选数据按 C 将数据转化为代码,然后全选代码按 P 生成函数,F5 反编译

大概就是将 unk_603170 作为密钥加密输入内容然后与 byte_6030A0 比较,而 byte_6030A0 已知

所以接下来知道 unk_603170 就可以解出 flag 了,看到之前主函数里的 sub_40207B 函数

看到加密的函数(这里我已经重命名为 md5_encrypt 了),能看到很明显四个特征值,所以可以大体确定为 MD5 加密

因为不是很清楚这些加密函数都对要求的数值造成了什么影响,也懒得推导,所以就采取了动调的方式获取到 unk_603170 的值,得到

所以总结一下就是

加密后的内容为

BC0AADC0147C5ECCE0B140BC9C51D52B46B2B9434DE5324BAD7FB4B39CDB4B5B

密钥为

CB8D493521B47A4CC1AE7E62229266CE

写脚本得到 flag

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{924a9ab2163d390410d0a1f670}

标签:AES,加密,函数,re3,flag,603170,GWCTF,2019,unk
来源: https://www.cnblogs.com/Moomin/p/15848267.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有