GFSJ0186-【notsequence】
杨辉三角
main函数
int main()
{
_DWORD *v0; // eax
int v2; // [esp+14h] [ebp-Ch]
_DWORD *v3; // [esp+1Ch] [ebp-4h]
memset(&unk_8049BE0, 0, 0x4000u);
puts("input raw_flag please:");
v3 = &unk_8049BE0;
do
{
v0 = v3++;
scanf("%d", v0);
}
while ( *(v3 - 1) );
v2 = sub_80486CD(&unk_8049BE0);
if ( v2 == -1 )
{
printf("check1 not pass");
system("pause");
}
if ( (unsigned __int8)sub_8048783(&unk_8049BE0, v2) != 1 )
{
printf("check2 not pass!");
exit(0);
}
if ( v2 == 20 )
{
puts("Congratulations! fl4g is :\nRCTF{md5(/*what you input without space or \\n~*/)}");
exit(0);
}
return 0;
}
sub\80486CD
int __cdecl sub_80486CD(int a1)
{
int j; // [esp+0h] [ebp-14h]
int v3; // [esp+4h] [ebp-10h]
int i; // [esp+8h] [ebp-Ch]
int v5; // [esp+Ch] [ebp-8h]
v5 = 0;
for ( i = 0; i <= 1024 && *(_DWORD *)(4 * i + a1); i = v5 * (v5 + 1) / 2 )
{
v3 = 0;
for ( j = 0; j <= v5; ++j )
v3 += *(_DWORD *)(4 * (j + i) + a1);
if ( 1 << v5 != v3 )
return -1;
++v5;
}
return v5;
}
sub_8048783
int __cdecl sub_8048783(int a1, int a2)
{
int v3; // [esp+10h] [ebp-10h]
int v4; // [esp+14h] [ebp-Ch]
int i; // [esp+18h] [ebp-8h]
int v6; // [esp+1Ch] [ebp-4h]
v6 = 0;
for ( i = 1; i < a2; ++i )
{
v4 = 0;
v3 = i - 1;
if ( !*(_DWORD *)(4 * i + a1) )
return 0;
while ( a2 - 1 > v3 )
{
v4 += *(_DWORD *)(4 * (v3 * (v3 + 1) / 2 + v6) + a1);
++v3;
}
if ( *(_DWORD *)(4 * (v3 * (v3 + 1) / 2 + i) + a1) != v4 )
return 0;
++v6;
}
return 1;
}
好吧没看明白 交给ai帮我分析一波
原来是杨辉三角呀 留空吧 这个是我的噩梦 哈哈哈 我依稀记得写了2天的杨辉三角 吓哭了 5.6 只需要22秒
exp
import hashlib
import math
nums = []
for n in range(20):
for k in range(n + 1):
nums.append(math.comb(n, k))
s = "".join(map(str, nums))
print("RCTF{" + hashlib.md5(s.encode()).hexdigest() + "}")
flag
RCTF{37894beff1c632010dd6d524aa9604db}
评论