查殼
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 個人...