2019UNCTF-RE-very_easy_re
程序员文章站
2022-05-15 11:51:01
...
2019UNCTF-RE-very_easy_re
每天一题,只能多不能少
very_easy_re
题目解析
的确是very easy,不过不是对我。base64再加简单的转换。
开始
1.题目
给出一个exe程序。
2.查壳
32位,无壳
3.IDA静态分析
丢进IDA。习惯性查字符,找到input。跟踪,交叉,伪代码,得到
sub_411320(&unk_423025);
i = 0;
v9 = 1;
sub_411299(std::cout, "Please input your key:");
sub_411136(std::cin, &Str);
v0 = j_strlen(&Str);
v8 = (char *)sub_4114FB((int)&Str, v0);
if ( j_strlen(v8) >= 0x18 )
{
for ( i = 0; ; ++i )
{
v2 = j_strlen(v8);
if ( i >= v2 )
break;
if ( i < 8 )
++v8[i];
if ( i >= 8 && i < 16 )
v8[i] += 3;
if ( i >= 16 && i < 24 )
v8[i] += 3;
if ( i >= 24 && i < 32 )
v8[i] += 4;
}
strcpy(v6, "WV6EWF[8dGU5]Y<pQZ8iPZ8iSKk7gnh=");
for ( i = 0; ; ++i )
{
v3 = j_strlen(v8);
if ( i >= v3 )
break;
if ( v8[i] != v6[i] )
{
sub_411299(std::cout, "Oh,there is the last step.But you are wrong");
goto LABEL_23;
}
}
sub_411299(std::cout, "Congratulations!!!You Get The Flag!!!");
}
else
{
sub_411299(std::cout, "It's a long walk~~~~");
}
流程很清楚,输入的字符,经过一个子程序的加密后,再经过中间一段的处理,得到的结果与已系统存储的字符串比对,相同的话就表扬你。那就是把系统保存的字符串进行逆向处理就可以了。
先看下处理子程序。
像不像base64?反正我觉得很像。
再回到主函数看下下面的处理部分
for ( i = 0; ; ++i )
{
v2 = j_strlen(v8);
if ( i >= v2 )
break;
if ( i < 8 )
++v8[i];
if ( i >= 8 && i < 16 )
v8[i] += 3;
if ( i >= 16 && i < 24 )
v8[i] += 3;
if ( i >= 24 && i < 32 )
v8[i] += 4;
}
很简单吧?
4.上脚本
#!python3
# -*- coding: utf-8 -*-
# @Time : 2020/11/13 16:23
# @Author : A.James
# @FileName: very_easy_re_exp.py
import base64
'''
for ( i = 0; ; ++i )
{
v2 = j_strlen(v8);
if ( i >= v2 )
break;
if ( i < 8 )
++v8[i];
if ( i >= 8 && i < 16 )
v8[i] += 3;
if ( i >= 16 && i < 24 )
v8[i] += 3;
if ( i >= 24 && i < 32 )
v8[i] += 4;
}
'''
cipher = 'WV6EWF[8dGU5]Y<pQZ8iPZ8iSKk7gnh='
print(len(cipher))
cipher1 = ''
for i in range(len(cipher)):
if i < 8:
cipher1 += chr(ord(cipher[i] ) - 1)
if i >= 8 and i < 16:
cipher1 += chr(ord(cipher[i]) - 3)
if i >= 16 and i < 24:
cipher1 += chr(ord(cipher[i]) - 3)
if i >= 24 and i < 32:
cipher1 +=chr(ord(cipher[i]) - 4)
print(cipher1)
flag = base64.b64decode(cipher1)
print(flag)
5.get flag
UNCTF{h4ve_f5n_1n_8h7r7}
结语
十分适合我这种菜鸡的re签到题。