不一样的flag
题目链接当然是来自buu上面的逆向了,这里就不放了
做题第一步例行查壳,上PE,如下图捏没有壳且是32位程序,所以嘞直
接用ida打开即可查找一哈字符串发现极为可疑不确定再看看,看看主函数
进入主函数反编译很好得到了什么捏,确定了我们的想法呢
一二三四是上下左右再康康给我们的字符串数一数,哦原来25位直接把他们五个一行五个一行呗,然后不能碰到1想办法走0从*到#号那里,然后就没然后了直接出flag咯
*1111
01000
01010
00010
1111#
迷宫如上呗就走嘛挺简单一题
JustRe
题目依旧buu上面的
第一步例行查壳发现无壳且为32bit,直接用ida打开
查找字符串在最下面发现可疑字符串疑似flag
很好我以为得出flag开开心心去输入,结果输入错误,那就看看这个函数的反编译吧
大概就是这个程序要点19999次然后就出flag然后呢我们看那里呢,当然是看sprintf函数咯,看见前面的%d%d,大胆猜测后面跟的19999与0就是%d所代表的,毕竟逆向这玩意三分经验七分蒙,大胆尝试,结果很好正确地。
刮开有奖
还是那一套开局先查壳发现无壳32位直接ida打开
打开后查找字符串发现base64的编码规则,然后直接确定这道题肯定要用到base64解密,至于逆向题里的加密方式要是不是很懂呢可以去百度学习一哈
然后继续跟进呗发现一堆字符串但是没头绪直接进入主函数反编译
进入DialogFunc函数里面,然后我们注意到string长度为8所以我们可以确定flag的长度为8
再往下看看还有没有什么东西,发现了下面还有个函数里面有十个字符,查看sub_4010F0函数发现这应该是加密的函数,直接把它转为C语言如下
#include<stdio.h>
int __cdecl sub_4010F0(int a1, int a2, int a3)
{
int result; // eax
int i; // esi
int v5; // ecx
int v6; // edx
result = a3;
for ( i = a2; i <= a3; a2 = i )
{
v5 = i;
v6 = i[a1];
if ( a2 < result && i < result )
{
do
{
if ( v6 > a1[result])
{
if ( i >= result )
break;
++i;
a1[v5] = a1[result];
if ( i >= result )
break;
while ( a1[i] <= v6 )
{
if ( ++i >= result )
goto LABEL_13;
}
if ( i >= result )
break;
v5 = i;
a1[result] = a1[i];
}
--result;
}
while ( i < result );
}
LABEL_13:
a1[result] = v6;
sub_4010F0(a1, a2, i - 1);
result = a3;
++i;
}
return result;
}
这里没有主函数别着急先分别出所需加密的字符串是啥,看见上面的那一堆ascll码直接转为字符如下图
这里即是所需加密的字符串然后接着上面没写完的代码写呗
int main()
{
char str[] = "ZJSECaNH3ng";
sub_4010F0(str,0,10);
printf("%s", str);
return 0;
}
这就是主函数然后运行一哈子得到加密后的字符串为
3CEHJNSZagn
接下来直接接着看DialogFunc函数,这里直接猜是用base64解密v4与v5,因为它给出的base编码表后面紧跟着的就是v4和v5,直接在线找个网站得到解密后的字符
加密后的v4与v5分别为jMp与WP1,然后接着往上看在这个函数这获取flag前几位
这里的string0它并非是Z而是加密后的3,3的ascll码为51,它加34为85对应的字符为U,string[1]为v10,它这里的v10同样为加密后的字符,v10是第五个字符也就是3CEHJNSZagn中的J,而这里的string[2]为加密后的第三位即E转为ascll码为69,再用69*3+141以后除以4等于87即W,string[3]求法与string[2]基本相同得出它为P,由此看出它后面跟的是v5,v5后面才是v4,所以再结合v4与v5得出flag为flag{UJWP1jMp}
这道题还是有点东西在里面的捏,base编码不是很新,现在二刷感觉思路清了不止一点半点,注意别把下面的那些flag前几个字符串搞混了就ok
总结
这里呢是缓解一下自己做题做的有点猛导致脑子有点不清醒的感受,同样希望可以帮助别人吧,这篇博客虽然就三个题,前两个就不说了,第三个还是很有意义的,把第三个搞明白了以后会对自己提升很大,慢慢加油吧,毕竟路还长。