CTF-RE-Cramckme2(Jarvis OJ)

.NET逆向题

 程序真正的入口在蓝条内的函数中,我们点进去之后向下翻,寻找可疑比较语句(由于函数较短,很容易找到)

根据下断点的两个语句分析,text应该就是输入的原文,而text2就是text经过加密后的密文。第一句是将text加密后赋值给text2,第二句是将text2和真正的flag的密文比较。

为了确保万无一失,我们下好断点然后观察变量的值。

 

text果然是输入的文本,并且根据text的不同text2也随之改变,大概可以猜测text2是text以某种方式加密后base64表示的结果。

首先进入第一个断点内的语句

bytes数组是加密密钥,其值在后续动态调试中可以找到,RijndaelManaged百度搜一下知道是AES相关的东西

于是我们跟进下的第二个断点内的语句。发现很复杂,但是我们只需要知道这个函数最后返回的值即可,不用太过关心怎么得到的。所以适当下好断点可以得到值为

 

写个程序跑一遍即可

from Crypto.Cipher import AES
import base64
import os
text="x/nzolo0TTIyrEISd4AP1spCzlhSWJXeNbY81SjPgmk="
key="pctf2016pctf2016pctf2016pctf2016"
text=base64.b64decode(text)
cipher=AES.new(key)
text=cipher.decrypt(text)
print(text)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值