2021NepCTF REVERSE-Hardcsharp Writeup

本文记录了一次逆向工程挑战的解决过程,从使用PEiD检查程序壳到利用IDA和Dnspy分析.NET程序。通过识别关键函数和理解异或运算,作者解密了加密算法,并找到了在线解密工具,最终获得了flag。这次经历展示了逆向工程在解决加密问题中的应用。
摘要由CSDN通过智能技术生成

2021NepCTF REVERSE-Hardcsharp

首先拿到文件第一步用PEiD查壳(养成好习惯)
在这里插入图片描述
什么都没找到QAQ,萌新只知道是32位的程序于是顺手放进IDA进行分析
在这里插入图片描述
在放入时发现该程序是由.NET做的

进入后点进jmp后的函数果然发现了熟悉的东西
在这里插入图片描述
直接放入Dnspy中进行分析(Dnspy的详细使用方法和下载地址在这里👉QAQ
在这里插入图片描述
一个个点开之后发现我们要分析的主要函数在@02000002中

而我们需要注意的是这部分的运算
在这里插入图片描述
由for循环函数可知array[]数组中每一项都与51做了异或运算

而在后面有一串这样的代码
if (string.Compare(aesClass.AesEncrypt(text2, text), strB) == 0)

即需要满足这个条件才算正确,在不知道的情况下百度了之后发现AesEncrypt是一种加密运算:

AES_ENCRYPT(加密前字符串,key)通过key加密后得到密文

AES_DECRYPT(已加密字符串,key)通过key解密后得到明文

其中key是需要指定的

简简单单写个小脚本array = [81, 82, 87, 81, 82, 87, 68, 92, 94, 86, 93, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18] text = '' for i in range(32): text += chr(array[i] ^ 51) print(text)
在这里插入图片描述
这个代码是得到的是text,即该程序中的AesEncrypt的密码key

我们需要的是明文text2

而if (string.Compare(aesClass.AesEncrypt(text2, text), strB) == 0)这串代码的意思就是:text2以text为密码进行Aes加密后要与strB一致才能pass it

现在我们已经知道了密码text与密文strB,剩下的就是找在线解密网站了
👉wyyyyyyyy!!!(找了半天这个有用,其他的不是失败就是半天加载不出)
在这里插入图片描述

于是乎:最终flag就是Nep{up_up_down_down_B_a_b_A_Nep_nep~}

由于卑微的实力以及周末有事没什么时间(当然菜是本质,菜才是重点)所以只做了这一题(别骂了别骂了在学了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值