世界で攻防--crackme

テストファイル:https://adworld.xctf.org.cn/media/task/attachments/088c3bd10de44fa988a3601dc5585da8.exe

 

1.準備

情報へのアクセス

  1. 32個のファイル
  2. コンパス圧縮シェル(NSPack)

 

1.砲撃

1.1 ODオープン(ESPの法則法)

 

WordやDWordのことができます

 

 

ライン上で[OK]をクリックします。

 

私たちは次のウェルにブレークポイントするように、ブレークポイントまで実行し、直接F9ことができます。

プラグインの砲撃をOllyDump選択します。

その上にファイルの名前を変更します。

 

 

1.2ソフトウェアの砲撃法

これは、ライン上の砲撃に巻き込まについて特に何もありません

 

しかし、この方法は、ファイルが破損しているという欠点がありました

 

あなたはImportREC修復を使用することができます

 

2.IDAオープン

1  INT __cdeclメイン(int型 ARGC、CONST  チャー ** ARGV、CONST  チャー ** envpを)
 2  {
 3    int型の結果。// EAX 
4    int型の V4。// EAX 
5    文字 BUF。// [ESP + 4H] [EBP-38H] 
6    チャーのDst。// [ESP + 5H] [EBP-37H] 
7  
8    BUF = 0 9    のmemset(&Dstの、00x31u )。
10    のprintf("入力してくださいフラグ:" );
 11    gets_s(&BUF、0x2Cu )、
 12    であれば(STRLEN(&BUF)== 42 13    {
 14      V4 = 0 ;
 15      ながら((*(&BUF + V4の)^ byte_402130 [V4の%16 ] )== dword_402150 [V4])
 16      {
 17        であれば(++ V4> = 42 18        {
 19          のprintf(" 右\ N!" );
 20          後藤LABEL_8;
 21        }
 22     }
 23      のprintf(" エラー\ n個!" );
24  LABEL_8:
 25      結果= 0 26    }
 27    他の
28    {
 29      のprintf(" エラー\ N!" )。
30      結果= - 1 31    }
 32    リターン結果。
33 }

 

3.コード分析

第二ラインによって42、フラグ42の長さを知ることができます

 

15ラインにより、我々は[V4]、配列の添字V4は41の最大である入力は[V4%16] XOR等しいdword_402150 byte_402130正しいフラグであることを知っています

nsp0:00402130 byte_402130デシベル' トン'                   ; DATA XREF:_main:loc_40107Fの↑rをnsp0:00402131 aHisIsNotFlagデシベル' his_is_not_flag '0

実際には、「this_is_not_flag」

 

nsp0:00402150 dword_402150 ddと12hと                   DATA XREF:_main + 8D↑Rnsp0:00402154                  DD 48、14時間、24時間、5CH、4AH、3DH、56H、0AH、10H、67H、0 nsp0:00402184                  DD 41hを、0 nsp0:0040218Cの                  DD 1 、46H、5AH、44H、42H、6EH、0CH、44H、72時間、0CH、0DH nsp0:0040218C用                  のDD 40H、3EH、4BH、5FH、21 、4Chの、5EH、5BH、17H、6EH、0CH nsp0:0040218C用                  のDD 16H、68H、5BH、12H、2 DUP(0 nsp0:00402200                  DDの48時間、名0EhのDUP(0 nsp0:0040223Cは                 dword_403000オフセットDD nsp0:00402240は                 dword_4022B0オフセットDD nsp0:00402244                  DD 1 、53445352h、41D713B4h、4CDD5318h、12DCFFBAh、0D5AF8709h nsp0:00402244                  DD 1

このデジタルは、実際に42を必要としています。

 

3.スクリプトを取得します

byte_402130 = " this_is_not_flag " 
dword_402150 = 0x12を、4、8、0x14に、0x24を、0x5Cを、0x4A、0x3D、0x56、は0x0A、0x10の、0x67 
0、 0×41、0、1、0x46の、0x5A、0x44の、0x42に、0x6E、 0x0Cの、0x44の、0x72、0x0Cの、0x0Dの 0x40の、0x3E、0x4B、0x5F、2、1、0x4C、0x5Eの、0x5B、0x17の、0x6E、0x0Cの、0x16、0x68  0x5B、0x12を、0、0、0x48 ] 

X = '' 

のための I における範囲(0,42 ):
    X + = CHR(dword_402150 [I] ^ ORD(byte_402130 [I%16 ]))

プリント(X)

 

4.getフラグ!

フラグ{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}

おすすめ

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