【攻防世界逆向】【高手题】《流浪者》《re4-unvm-me》《tt3441810》《BABYRE》

Crackme

Posted by Corax on September 30, 2023

#题目流浪者 ##解法 先运行一下 用exeinfo看一下 ok放进ida, 其实刚给我的是一个这样的winmain函数,没有什么有用的信息(其实也可以直接找start函数) 打开strings窗口看看 这个kanxue。。好像有些意思 是一个判断,最后是str1和kan。。进行判断,对的就pass。 所以关键str1是怎么来的 上面这一串就是对于str1的处理,具体的方法应该是对a1数组中的数据进行运算,作为索引在adcd。。中选取字符。 (其实我在这里做的时候一直不明白a1为什么是数组,因为传入的话也是一个int型,所以也卡了一会) 好,现在a1至关重要。 看一下这个函数被谁调用过,怎么传参。 上面很唬人,但关键的点还是在于这边的判断语句。首先看最中间的这个函数有啥用 大概是一个弹窗,告诉不对。详细应该是下面的处理。 通过分析可以得出对于我们输入的字符串,对每一位判断范围,在48,57间就减48到0,9, 在97到122间就-87到10-35 在65,90就-29到36到61 ,所以逆向思路也就很明显了先找到索引,在逆向算法进行还原,代码如下 #题目re4-unvm-me ##解法 这道题给的是一个pyc文件,前两天还做的Litctf里面有一题也是pyc,不过那里面的题目,把pyc头几个位改了,没法成功反编译,这道题并没有,直接uncompyle反编译出来 是这样一个东西,可以看到有几个比较主要的条件 1.长度小于等于69, 2.5的倍数 3.也是最关键的一点 可能因为基础不牢,说实话不是很懂。这边是把flag 5位一组的取出来,然后通过md5.new()函数返回出它的md5值,然后通过 返回摘要,作为十六进制数据字符串值,是值。 然后通过int函数并在前面加0x 后面加16,输出一个10进制的整数,在与md5s对应的组别作比较,错误则返回错误。 所以逆向思路就是:对每一组md5先转成16位出来md5值,在通过解密获得字符串,平起来 #题目tt3441810 ##解法 下了不知道一个什么玩意 用ida强行打开 观察到这里有{},好像flag就在里面 把它复制下来,写个脚本 (要注意这边多行的字符串可以用三引号) 用replace方法可以去掉当中不需要的字符。 也研究了一下别人的wp 筛选出字母与{},这个值再97到127 65到90 最后把多余的字符过滤即可。 #题目BABYRE 这题还没研究出来 每天继续