世界は、攻撃と守備の先進5-7を逆転します

5.re-用-50-PLZ-50 TU-CTF-2016

このプロセスは、比較的簡単ですXOR

 

 

1 X =リスト(' cbtcqLUBChERV [[NH @ _X ^ D] X_YPV [CJ ' 2、Y = 0x37は
 3 Z = '' 
4  のための T におけるX:
 5      、Z + = CHR(ORD(T)^ Y)
 6  プリント( Z)
コードの表示

TUCTF {but_really_whoisjohngalt}


 

 

6.keyのcsaw-CTF-2016-QUALS

?W?H?のTh?A?P?P?E?Nを印刷実行した後?終了します

 

 =変更指示ファイルの読み出しをスキップし、出力= W = R = O = N = G = K = E = Y

 

 

キーポイントはsub_4020c0機能です

 

 

 であれば、関係の比較

動的デバッグを直接フラグを得ることができます

 

 

V7ここでは、実際に第三のパラメータsub_4020c0の関数であり、

 

 ウォッチメモリーは、その2つの治療サイクルを見つけました

 

 スクリプト:

1 X = [0x74、0x68、0x65、0x6D、0x69の、0x64、の0x61、0x74、0x68、0x65 2    0x6D、0x69の、0x64、の0x61、0x74、0x68、0x65、0x6D、0x69の、0x64 3    0x6に]
 4 Y = [0x3E、0x2D、0x2D、0x2D、0x2D、0x2Bを、0x2Bを、0x2Bを、0x2Bを、0x2E 5    0x2E、0x2E、0x2E、0x3cの、0x3cの、0x3cの、0x3cの、0x2E ]
 6  プリント(LEN(x))を
7  プリント(LEN(Y))
8、Z = []
 9  ための I における範囲(18 ):
 10      z.append((X [I] ^ Y [I])+ + 9 22 11  
12  印刷(」」.join(マップ(16進数、Z)))
13  プリント'' .join(マップ(CHR、Z)))
コードの表示

idg_cni〜bjbfi | gsxb

 


 

学校-CTF-冬-2015 7.simple-100をご確認ください

EXEファイルピット、苦い涙をいっぱい、解析ELFファイル

 

 私たちは、直接出力フラグは、Linuxにすることができcheck_key()関数を失いました

分析:

1つの    A1 [ 0 ] = 0xE37EC854 2つの    A1 [ 1 ] = 0x9A16C764 3つの    A1 [ 2 ] = 0x326511CD 4つの    A1 [ 3 ] = 0x43D3E32D 5つの    A1 [ 4 ] = 0xD29DA992 6つの    A1 [ 5 ] = 0xD32C6DE6 7つの    A1 [ 6 ] = 0x6AFEBDB6 8    V14 = 0x13に9    V3 =のalloca(32);
10    V15 =&V7。
11    のprintf(" キー:" );
12    __isoc99_scanf((INT" %sの"、(INT)V15、V5、V6、V7、V8、V9、(INT)V10、V11、V12、A1 [ 0 ]、A [ 1 ]、A [ 2 ]、 A1 [ 3 ]、A [ 4 ]、A [ 5 ])。
13    であれば(check_key((INT )V15))
 14      interesting_function(A1)。

 

1つの符号なし整数 * __ CDECL interesting_function(INT A1 [ 7 ])
 2  {
 3    の符号なし整数 *結果。// EAX 
4    符号なし整数の一時。// [ESP + 18時間] [EBP-20H] 
5    int型 I; // [ESP +代一] [EBP-代一] 
6    int型の J; // [ESP + 20H] [EBP-18時間] 
7    のint * __属性__((__ org_arrdim(07)))V5。// [ESP + 24時間] [EBP-14H] 
8    のchar * ptr_temp。// [ESP + 28H] [EBP-10H] 
9    の符号なし整数 V7。// [ESP + 2歴] [EBP-章] 
10  
11    V7 = __readgsdword(0x14u )。
12    結果=(符号なし整数 * )A1。
13    V5 =のA1。
14    のために(i = 0 ; iは= < 6 ++; I)
 15    {
 16      [I] ^一時= V5を0xdeadbeefが17      結果=&TEMP。
18      ptr_temp =(チャー *)&TEMP。
19     (J = 3、J> = 0 ; - j)を
 20        結果=(符号なし整数 *)のputchar((CHAR)(ptr_temp [J] ^ flag_data [I] [J]))。
21    }
 22    リターン結果。
23 }

スクリプト:

1つの勝利=〔が0x54、0xB8、0xFEの、の0x61、0x00に、0x13に、0x00で、0x00に、0x00に、の0x61、0x6A、0xFEの、0xBD、0xB6、0xD3、0x2C 2 0x6D、0xE6、0xD2、0x9D、0xA9、0x92、0x43この、0xD3、0xE3、0x2D、0x32の、0x65、0x11を、0xCD、0x9A、0x16は3 0xC7に、0x64、0xE3、0x7Eを、0xC8、0x30から取得したデバッグ】操作データを#windows
 。4 WIN2 = 0x6A、0xFEの、0xBD、 0xB6、0xD3、0x2C 5 0x6D、0xE6、0xD2、0x9D、0xA9、0x92、0x43この、0xD3、0xE3、0x2D、0x32の、0x65、0x11を、0xCD、0x9A、0x16 6 0xC7に、0x64、0xE3、0x7Eを、0xC8、が0x54 ]
 7。 WIN2 = WIN2 [:: - 1 ]
 8。 
9。 flag_date = [0xDC、0x17の、0xbfの、0x5B、は0xD4、は0x0A、0xD2、として0x1B、0x7D、0xDA10    0xA7、0x95、0xB5、0x32の、0x10を、0xF6、0x1cに、0x65、$ 53、$ 53 11    0x67、0xBA、0xEA、0x6E、0x78と、ただし0x22、0x72、0xD3 ]
 12  
13  
14 A1 = [0  I における範囲(7 )]
 15の A1 [0] = 0xE37EC854 16の A1 [1] = 0x9A16C764 17の A1 [2] = 0x326511CD 18の A1 [3] = 0x43D3E32D 19の A1 [4] = 0xD29DA992 20の A1 [5] = 0xD32C6DE6 21の A1 [6] = 0x6AFEBDB6 22  
23 X = [0xEFという、0xbe、0xADの、0xde]
 24個の 
25 S = '' 
26  のための I における範囲(7 :)
 27      (TEMP =(A1 [I] ^ 0xdeadbeefが).to_bytes 4、' 少し' 28      のための J における範囲(3、-1、-1 ) :
 29の          S + = CHR(TEMP [J] ^ flag_date [I 4 + * j]を)
 30          プリント(CHRを(^ flag_date [I * 4 + J] ^ X [J])、終了[I 4 + jは*]勝ちます= '')
31           プリント(CHR(V8 [I * 4 + J] ^ flag_date [I * 4 + J] ^ X [J])、終了= '')
32  プリント()
33  プリント(S)

異なるレイアウトおよびLinuxでのスタック内のexeファイルの変数、

EXEファイル:愛が§; nはμ` - ????:!??? C、HI±= ?? C ???トン
ELFファイル:flag_is_you_know_cracking !!!

flag_is_you_know_cracking !!!

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/DirWang/p/11432234.html