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

发布时间 2023-05-16 17:59:12作者: Corax0o0

题目流浪者

解法

先运行一下
用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

这题还没研究出来 每天继续