吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3933|回复: 10
收起左侧

[CTF] 首届钓鱼城杯逆向题 reg 题解

[复制链接]
zsky 发表于 2020-8-28 00:06
本帖最后由 L15263458908 于 2020-11-7 15:20 编辑

首届钓鱼城杯逆向题reg题解

首先下载程序,观察, 通过这个图标可以看出,感觉这个程序并不是普通的C/C++写的EXE程序,而是其他语言打包的

thum_38C866CC45514738B72669178701FBCF.png

用IDA打开程序,果然,毫无头绪
用010editor打开程序,发现里面找到了关键字符串,然后居然是在资源段
thum_A4F13CB9D7E143E69CDDDBB1652A905D.png
用ResourceHacker打开reg.exe
thum_235E4C8EB0874F15AF528432353DF5C6.png
发现,关键数据是在PRELOAD.MAIN里面,并且可以发现这个程序是用aardio写的,本来想反编译PRELOAD.MAIN来还原源代码来着,结果并没有找到相关aardio反编译的资料 (如果大佬知道怎么反编译的话,请评论留言,感谢!!)

结果只能放弃这种方法,观察PRELOAD.MAIN中的关键字符串,猜测是AES加密,
猜测它最终会调用底层的Win32API ,CryptEncrypt函数
这里先给出两个函数的参数

BOOL CryptEncrypt(
  HCRYPTKEY  hKey,     //密钥句柄
  HCRYPTHASH hHash,    //
  BOOL       Final,    //
  DWORD      dwFlags,  //
  BYTE       *pbData,  //存放要加密的数据
  DWORD      *pdwDataLen, //存放要加密的数据的长度
  DWORD      dwBufLen   //pbData缓冲区总大小
);
// 加密后, pbData存放加密后的数据,然后pdwDataLen存放的是加密后数据的长度
BOOL CryptDecrypt(
  HCRYPTKEY  hKey,  //密钥句柄
  HCRYPTHASH hHash, //
  BOOL       Final,  //
  DWORD      dwFlags, //
  BYTE       *pbData,  //加密的数据
  DWORD      *pdwDataLen //存放要加密的数据长度
);
// 解密后, pbData存放解密后的数据,然后pdwDataLen存放的是解密后数据的长度

在加密的之前,其实还调用了很多其他的API来配置环境,因为那些都与解题无关,所以不再解释
具体的,大家可以参考这2篇文章
https://blog.csdn.net/kamaliang/article/details/6608786
https://www.cnblogs.com/M4ster/p/win_api_aes.html

我们用OD打开程序,在CryptEncrypt函数下断点
thum_FDB53B4DF0F8491DB00201E0A97C2AF3.png

thum_AF19A4B9150D42198DA63D398E2B5FD8.png
输入123

thum_563C7A238CA3422AA2F02FE17636839F.png
观察参数,pbData是咱们输入的数据,然后直接ctrl +F9,运行到函数末尾
thum_7AF40BE03C0340B8A20E0DE28C78A926.png

发现数据已经加密完了,然后把数据提取出来,进行base64加密得到

import base64

a = b"\x33\x36\x38\xF1\x66\x54\x6C\xBC\x9C\x73\x02\xDE\x9D\x87\x5C\x2E"
c = base64.b64encode(a)
print(c) #MzY48WZUbLyccwLenYdcLg==

发现与程序输出的值一模一样
thum_888CE077257D4AC693C13E8377422375.png

现在就很明确了,我们的思路就是手动patch改汇编来调用CryptDecrypt函数,关于它的参数,只需要改动 pbdata和pdwDataLen就可以了,于是我们把题目给出的
"8QAUFzIzw0gtrLeRUpesiVXTHsNtf+yNFFplxexMhAnJ3ejTeAlPHreByieTh1Gg"进行base64解密,得到
F1 00 14 17 32 33 C3 48 2D AC B7 91 52 97 AC 89
55 D3 1E C3 6D 7F EC 8D 14 5A 65 C5 EC 4C 84 09
C9 DD E8 D3 78 09 4F 1E B7 81 CA 27 93 87 51 A0

然后长度是0X30
进入OD,重新运行程序,还是在CryptEncrypt函数头部下断点,Ctrl + F9运行到末尾
这时,开始修改参数把 pbdata改为上述数据,然后pdwDataLen改为0X30

thum_4155AC613EF54B3A9E19535132625DA1.png

thum_6B72217E92B6407793241A749D74414D.png

然后把ESP + 4
thum_78B2860E011341F98C4C2AFC8843524C.png

参数全部构造完毕
最后开始改汇编,直接改为call CryptDecrypt

thum_E36104AD040C46FABBD7763BAED1DFF9.png

F7进去,Ctrl + F9运行到函数末尾,再次观察参数
pbdata已经是解密后的数据了,双击过去,发现解密完成,得到了flag
thum_5203675FF82645769004BE9EA18F8A3A.png



题目链接
https://wwe.lanzouj.com/iznKWg4jv2h
密码:erpg

免费评分

参与人数 12威望 +1 吾爱币 +31 热心值 +11 收起 理由
键盘上的舞者 + 1 谢谢@Thanks!
女萝岩 + 1 + 1 可以可以
By阿清 + 1 + 1 我很赞同!
__不说 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
手持仙女棒 + 1 + 1 热心回复!
翳麟 + 1 + 1 用心讨论,共获提升!
圆缘999999 + 1 热心回复!
sulong007 + 1 + 1 用心讨论,共获提升!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Lucifer_BW + 1 + 1 我很赞同!
朱朱你堕落了 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

digitalhouse 发表于 2020-8-28 08:55
太厲害了
nonamer 发表于 2020-8-28 09:07
BXb 发表于 2020-8-28 09:08
就是那个秋 发表于 2020-8-28 14:52
谢谢大神分享!
xiong779 发表于 2020-8-28 15:44
谢谢大神分享!
寒山远 发表于 2020-8-28 17:02
感谢分享
未央i 发表于 2020-8-28 21:30
感谢分享
__不说 发表于 2020-8-29 17:12
用了半天终于复现了。。不过还只是复现,感觉好多思路还得学习。感谢楼主的WriteUp,对新手真的十分友好!
小朋友呢 发表于 2020-8-29 18:12
大神这个8QAUFzIzw0gtrLeRUpesiVXTHsNtf+yNFFplxexMhAnJ3ejTeAlPHreByieTh1Gg是在程序里面找到的还是从哪里找到的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 10:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表