Dirección del título: https://buuoj.cn/challenges#Mysterious
El archivo adjunto al título es un exe, ingresemos algo al ejecutar, intente ingresar algunos caracteres, no hay respuesta
Abra con el Bloc de notas para verificar si el exe es de 64 bits o de 32 bits
PE...L...
Es una función de archivo exe de 32 bits, use ida para abrir y Shift+F12
ver caracteres
Haga clic well done
para encontrar una cadena similar a la bandera.
Cuando Functions Window
encuentre esta dirección, haga clic para F5
desmontar y ver el código pseudo-C
int __stdcall sub_401090(HWND hWnd, int a2, int a3, int a4)
{
char v5; // [esp+50h] [ebp-310h]
CHAR Text[4]; // [esp+154h] [ebp-20Ch]
char v7; // [esp+159h] [ebp-207h]
__int16 v8; // [esp+255h] [ebp-10Bh]
char v9; // [esp+257h] [ebp-109h]
int v10; // [esp+258h] [ebp-108h]
CHAR String; // [esp+25Ch] [ebp-104h]
char v12; // [esp+25Fh] [ebp-101h]
char v13; // [esp+260h] [ebp-100h]
char v14; // [esp+261h] [ebp-FFh]
memset(&String, 0, 0x104u);
v10 = 0;
if ( a2 == 16 )
{
DestroyWindow(hWnd);
PostQuitMessage(0);
}
else if ( a2 == 273 )
{
if ( a3 == 1000 )
{
GetDlgItemTextA(hWnd, 1002, &String, 260);
strlen(&String);
if ( strlen(&String) > 6 )
ExitProcess(0);
v10 = atoi(&String) + 1;
if ( v10 == 123 && v12 == 120 && v14 == 122 && v13 == 121 )
{
strcpy(Text, "flag");
memset(&v7, 0, 0xFCu);
v8 = 0;
v9 = 0;
_itoa(v10, &v5, 10);
strcat(Text, "{");
strcat(Text, &v5);
strcat(Text, "_");
strcat(Text, "Buff3r_0v3rf|0w");
strcat(Text, "}");
MessageBoxA(0, Text, "well done", 0);
}
SetTimer(hWnd, 1u, 0x3E8u, TimerFunc);
}
if ( a3 == 1001 )
KillTimer(hWnd, 1u);
}
return 0;
}
Satisfacer
if ( v10 == 123 && v12 == 120 && v14 == 122 && v13 == 121 )
De entrada no puede exceder la longitud del carácter 6
, o al final del programa, v10
se atoi()
convierte en un número entero y el número de función +1
, a continuación cumple con las condiciones v10
debe 122
, v12
, v13
, v14
carácter ASCII correspondiente a xyz
, la entrada
122xyz
Puedes conseguir la bandera
La bandera también se puede obtener a partir del código pseudo-C de acuerdo con el empalme del programa
flag{
123_Buff3r_0v3rf|0w}