暑期CTF練習 第七周

2021-10-23 12:14:48 字數 1927 閱讀 9273

查殼

ida64開啟

通過查詢字串找到了關鍵函式

首先,程式將獲取到的時間進行了md5加密

for

( i =

8* a2 +

1; i %

512!=

448;

++i )

; v2 = i;

i /=8

; dest =

calloc

(v2 /8+

64,1ull);

memcpy

(dest, a1, a2)

;// 將a1中的值存入dest中*(

(_byte *

)dest + a2)=-

128;

*(_dword *)(

(char

*)dest + i)=8

* a2;

for( j =

0; j < i; j +=64

)else

}else

}else

v131 = v137;

v137 = v138;

v138 = v139;

v139 +

=__rol4__(*

(_dword *

)&v132[

4* v134]+*

(&v3 + k)

+ v135 + v140,*(

&v67 + k));

v140 = v131;

} dword_2030b8 +

= v140;

dword_2030c0 +

= v139;

dword_2030b4 +

= v138;

dword_2030bc +

= v137;

}free

(dest)

;}

加密後的時間與「.fluxfingers.net」結合

snprintf

(&src,

33ull

,"%s%s%s%s"

,&v18,

&v17,

&v16,

&v15)

; v3 =

strlen

(&src)

; v4 =

strlen

(v11)

;

dest =

(char*)

malloc

(v3 + v4 +1)

;if(!dest )

return

1ll;

*dest =0;

strcat

(dest,

&src)

;strcat

(dest, v11)

;md5

(s)+

".fluxfingers.net"

將得到的字串傳入 v21 = sub_18a4(dest);處理,再對得到的字串進行base64解密。

就是將獲得的日期date進行

base64(sub_18a4(md5(date)+".fluxfingers.net")).decode() ^ 0x25

因此獲取到正確時間即可。

聯絡到瑪雅社會,大家最先想到的應該就是那個關於世界末日的預言吧,因此可以判斷這個時間就是2012-12-21

在linux下將時間調整為2012-12-21,執行即可。

flag是:flag

暑期CTF練習 第五周

查殼無殼,64位檔案 通過字串找到了main函式,檢視偽 偽 很長,大概是輸兩次數,輸入的數與隨機數的種子有關,且經過md5加密等,可爆破得之 a for i in range 16 0xffff c 0 j i while j c c 1 j j j 1 if c 10 為了將數輸入到程式中,可以...

第七周 OJ練習 3

問題及 題目描述 輸入三條邊的長度,如果這三條邊能構成三角形,則需要計算三角形面積,如果不能構成三角形則輸出提示資訊 error input 輸出的面積按兩位小數方式輸出 輸入三條邊的長度 輸出如果這三條邊能構成三角形,則輸出該三角形面積,如果這三條邊不能構成三角形,則輸出提示資訊 error in...

暑期CTF練習 Day4

和之前寒假做過的一題相似,ida64開啟發現是mips彙編的。有點覺得麻煩依然想用ida,之前學過一點mips彙編,看了一下主函式,擷取部分如圖所示 不是很複雜的樣子,那就暴力解決直接讀吧 text 004013cc行的後面有乙個注釋 cbtcqlubcherv nh x d x ypv cj 個人...