http://asis-ctf.ir/tasks/crypto/crypto_100_0846ec09aab1276d3f58132e9e0d9040
193783664954325860839119335839123899215102615420822972351760578005089136540425309354036361893838393003588891746622376179640815659427394332341396349623915618698881917748452642227703372088122750038977875271898725946720852004880885256474153240496403679762658175476439747881512983568010339887513815290532457778339653199840844995620334862083972129131373571189257219076954184188287439143813927696901842427070726653570329826784994939781399262722041373098152896420678252225833798975089624831218241591628711120707329895543671411906901315360684109949162093034473760905475852393975531277897806950327343042645059549958465853312789713887760614613019996408541328573908373854848160937603498857471516627134163969286531049737140365371424114198553258003189099111625628658195048410056477354418943486633764457994737288416245326617781808808365823018019007303548026276450867096742624996960312090440565297914562234479315177247633875823205403409920418528411649247750473506398553163169161650499998659753179520467576895466482641387252430718673195843748651606278144数字の羅列です。
まず、この数字の羅列を巨大な数値として扱ってみましょう。Rubyだと簡単に扱うことができます。
下記は、数値を16進数に変換しバイナリとしてファイルに出力するrubyプログラムです。
f = File.open("1c2a7ff1d5cdf3d36544551ae18e30c8", "r")出力されたファイルの種類をfileコマンドで調べます。
a = f.read
f.close
b = a.to_i
c = b.to_s(16)
p c
e = c.scan(/../).map{ |d| d.to_i(16) }.pack('C*')
f = File.open("aaa", "wb")
f.write(e)
f.close
% file aaa7-zipなので解凍してみると、”strange”ファイルが出来ます。
aaa: 7-zip archive data, version 0.3
% file strangefileコマンドで調べると、lzop形式なのでUniversal Extractorで解凍すると、”strange.uu”ファイルが出来ます。
strange: lzop compressed data - version 1.030, LZO1X-999, os: Unix
% file strange.uuWinRARで解凍?すると、”strange.U”ファイルが出来ます。
strange.uu: uuencoded or xxencoded, ASCII text
% file strange.U
strange.U: ASCII text
fe18be6a597ffad862b3e8acf9afacb6b6a781efa67acb1a81efad85ab7e先ほどのrubyプログラムを流用して、16進文字列をバイナリとしてファイル作成するプログラムを作ります。
ca8bbe85abdefa7a2dfac79e9fe6de7e8adeffeb617be7e56a0fa2b3e012
212fae9dd7abb1ca2b7bee1bf38d79d5fd7bfb4774ef6db8fbde7b79af1e
6be79ae1a7f4
f = File.open("strange.U", "r")
c = f.read
f.close
p c
e = c.scan(/../).map{ |d| d.to_i(16) }.pack('C*')
f = File.open("bbb", "wb")
f.write(e)
f.close
% file bbbbase64でエンコードします。
bbb: data
% base64 bbbフラグは、
/hi+all/+this+is+a+strange+message+that+you+have+not+seen+before/+the+flag+i
s+ASIS+underscore+4b84151f17+0d07224+957ea8ea+ea4af0
ASIS_4b84151f170d07224957ea8eaea4af0だと思いましたが、1文字足りないようです。