BUUCTF - [ACTFの新入生の季節2020] easyre

テストファイル:https://www.lanzous.com/ib515vi

 

砲撃

情報を取得するには

  • 32個のファイル
  • UPX暗号化

 

コード分​​析

1  INTメイン(__cdecl INT ARGC、CONST  チャー ** ARGV、CONST  チャー ** envpを)
 2  {
 3    チャー V4。// [ESP + 12H] [EBP-2EH] 
4    チャー V5。// [ESP + 13H] [EBP-2DH] 
5    チャー V6。// [ESP + 14H] [EBP-2歴] 
6    チャー V7。// [ESP + 15H] [EBP-2BH] 
7    チャー V8。// [ESP + 16時間] [EBP-2AH] 
8    チャー V9。// [ESP + 17H] [EBP-29H] 
9   char型の V10; // [ESP + 18時間] [EBP-28H] 
10    チャー V11。// [ESP + 19H] [EBP-27H] 
11    チャー V12。// [ESP + 1AH] [EBP-26H] 
12    CHAR V13。// [ESP + 1BH] [EBP-25H] 
13    CHAR V14。// [ESP +代一] [EBP-24時間] 
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-16時間] 
19    CHAR V20。// [ESP + 2歴] [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    チャー V26。// [ESP + 3 BH] [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(" 入力してください:" );
42    のscanf(" %S "、&V19)。
43    であれば((_BYTE)V19 =!65 || HIBYTE(V19)=!67 || V20 =!84 || V21 =!70 || V22 =!123 || V26 =!125 44      リターン 0 45    V16 = V23。
46    V17 = V24。
47    V18 = V25。
48    のための(私は=0 ; I <= 11++ I)
 49    {
 50      であれば(*(&V4 + I)= _data_start __ [*((!CHAR *)・I + V16) - 1 ])
 51        リターン 0 52    }
 53    のprintf(" あなたは正しいです!" );
54    リターン 0 ;
55 }

サイクルは、ラインフォーカスのために観察され、サイクル長は、アレイV4と比較し、添字の値としてフラグのASCII値のフラグ11から学習しなければなりません。非常にシンプルな、ちょうど私達は、V4の_data_start__を使用して、配列内の位置を見つけるために、私たち値のフラグを必要とします

 

スクリプト

- * -コーディング:UTF-8 - * - 

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

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

POS = []

以下のためのV4:
    pos.append(model.find(CHR(i))を +1 
S = [CHR(X + 1)のためのx におけるPOS]
フラグ = '' .join(S)
 印刷' フラグ{ ' +フラグ+ ' } '

 

フラグを取得します!

フラグ{U9X_1S_W6 @ T}?

おすすめ

転載: www.cnblogs.com/Mayfly-nymph/p/12664201.html