BUUCTF - [primera temporada ACTF 2020] easyre

archivo de prueba: https://www.lanzous.com/ib515vi

 

bombardeos

Para obtener información

  • 32 archivos
  • cifrado upx

 

Análisis de código

1  int __cdecl principal ( int argc, const  char ** argv, const  Char ** envp)
 2  {
 3    Char v4; // [esp + 12h] [ebp-2Eh] 
4    Char v5; // [esp + 13h] [ebp-2Dh] 
5    Char v6; // [esp + 14h] [ebp-2Cr] 
6    Char v7; // [esp + 15h] [ebp-2Bh] 
7    Char v8; // [esp + 16h] [ebp-2Ah] 
8    Char v9; // [esp + 17h] [ebp-29h] 
9   Char v10; // [esp + 18h] [ebp-28h] 
10    Char v11; // [esp + 19h] [ebp-27h] 
11    Char v12; // [esp + 1Ah] [ebp-26h] 
12    Char v13; // [esp + 1Bh] [ebp-25h] 
13    Char v14; // [esp + 1Ch] [ebp-24h] 
14    Char v15; // [esp + 1Dh] [ebp-23h] 
15    int v16; // [esp + 1Eh] [ebp-22h] 
16    int v17; // [esp + 22h] [ebp-1Eh] 
17    int v18; //[esp + 26h] [ebp-1Ah] 
18    __int16 v19; // [esp + 2Ah] [ebp-16h] 
19    Char v20; // [esp + 2Cr] [ebp-14h] 
20    Char v21; // [esp + 2Dh] [ebp-13h] 
21    Char v22; // [esp + 2Eh] [ebp-12h] 
22    int v23; // [esp + 2Fh] [ebp-11h] 
23    int v24; // [esp + 33h] [ebp-Dh] 
24    int v25; // [esp + 37h] [ebp-9H] 
25    Char v26; // [esp + 3Bh] [ebp-5H] 
26    int i;// [esp + 3Ch] [ebp-4H] 
27  
28    __main ();
29    v4 = 42 ;
30    v5 = 70 ;
31    v6 = 39 ;
32    v7 = 34 ;
33    v8 = 78 ;
34    v9 = 44 ;
35    v10 = 34 ;
36    v11 = 40 ;
37    v12 = 73 ;
38    v13 = 63 ;
39    v14 = 43 ;
40   v15 = 64 ;
41    printf ( " Introduce: " );
42    scanf ( " % s " , & v19);
43    si ((_BYTE) v19 =! 65 || HIBYTE (v19) =! 67 || v20 =! 84 || v21 =! 70 || v22 =! 123 || v26 =! 125 )
 44      de retorno  0 ;
45    v16 = v23;
46    V17 = V24;
47    V18 = V25;
48    para (i =0 ; i <= 11 ; ++ i)
 49    {
 50      si (* (y v4 + i) = _data_start __ [* ((! Char *) y v16 + i) - 1 ])
 51        de retorno  0 ;
52    }
 53    printf ( " Estás en lo correcto! " );
54    de retorno  0 ;
55 }

Se observó ciclo para el foco lineal, la duración del ciclo debe ser aprendida de la bandera 11 para el valor ASCII de la bandera como un valor subíndice, en comparación con la v4 matriz. Muy simple, sólo tenemos que encontrar una posición en la matriz mediante el _data_start__ v4, la bandera de lo que el valor

 

guión

# - * - coding: UTF-8 - * - 

V4 = [42,70,39,34,78,44,34,40,73,63,43,64 ] 

modelo = r " } | {zyxwvutsrqponmlkjihgfedcba`_ ^ ] \ [ZYXWVUTSRQPONMLKJIHGFEDCBA @> = <;: 9876543210 /.-,+*) (? " + CHR (0x27) + r ' &% $ #!" ' 

pos = [] 

para i en v4: 
    pos.append (modelo .find (chr (i)) 1 ) 
s = [CHR (x + 1) para x en pos] 
bandera = '' .join (s)
 de impresión ( ' flag { ' + bandera + '} ' )

 

obtener la bandera!

bandera {U9X_1S_W6 @ T?}

Supongo que te gusta

Origin www.cnblogs.com/Mayfly-nymph/p/12664201.html
Recomendado
Clasificación