【NSSCTF逆向】《enc》《easyenc》

CTF

Posted by Corax on September 30, 2023

#总览 enc tea rc4 smc加密 easyenc int逐位转char #题目enc ##解法 感觉还是挺难得一个题目 32位无壳 直接扔进ida 直接找关键字符串 首先注意到的是right,但是很奇怪没有函数引用, 先不急 先看下面的那个函数 进去 找到main函数了 看起来是一个很简单的程序 先来看前半部分 把我们输入的v11,分别给了v10和v7 然后有一个函数对v7进行操作 详细的操作如上图,很明显是一个tea,ok,退出来 下半部分有两个函数有看点的,第一个传入了一个v10,详细跟踪一下 到这里还没完,继续下去 一个加密方法。而上面是一个典型的smc局部加密代码,看看另外一个函数 ida报错了,点进去地址看看 显然就是被加密的部分了,不着急解密看看 这个解密代码之前有做过,拿来用吧。 变成现在这样,还没结束,先按c对他们重新分析一下 已经ok了,但是还没有承认这个函数,通过edit function create function来创建函数 f5 有了,是一个rc4。 关于详细的脚本我没写,看了官方的wp https://www.cnblogs.com/Tree-24/p/17346919.html#enc flag NSSCTF{y0u_ar3_rc4_t3a_smc_m4ster!!} #题目easyenc ##解法 感觉这题也是挺抽象的。 无壳64位,丢进ida 进入后直接反编译 看上去还是蛮简单的,来分析一下 一些赋值,框中内容是一个输入函数 v4这里是用一个do while然后对输入字符串的长度进行一个查询。 这里是关键了,v4应该是41,也就是输入的应该是41位 这两条是最抽象的。 实际上是逐位读v10,而v10是一个4个字节的int,这里操作实际上是取1个字节 等于是取一个字符。 然后这个字符和v8的一位比较,对的话就正确。 而v8就在上面。 所以逆向思路就是通过这个v8来拼。 我自己做的时候是手动的,极其麻烦,这里贴一下别的师傅的写法 https://blog.csdn.net/qq_46266259/article/details/128642972 flag