つれづれなる備忘録

CTF関連の事やその他諸々

ADCTF2014 [07] reader

Read 10 times. nc adctf2014.katsudon.org 43010

今日は連続してバーコードを読み取る問題のようですね

 

ひとまず送られてくるバーを数値に置き換えましょう

『▌』⇒10 『█』⇒10 『▐』⇒01 『 』⇒0

一つ目に来たコードはこんな感じ

▌▌██▐▐ █ ▌█ ▐▐▌▌█ █ ▌▐▐▐ ▐▌▌█▐ ▐▌█ ▌█▐▐ ▐▌▐▌▌█ ▌▐▐ ▐ ▌█ █▐▐▐▐█▌▌ 101011110 101001100 101100010 110101100 110010010 101000110 101101000 110110010 110101000 110011010 110010010 100010010 110011010 1010111101

スタートコードが101011110、ストップコードが1010111101のバーコードを調べると・・・

ありました!Code93です

 

対応表と見比べて、実装しましたー

solve_reader.py

実行して待ってれば、10回バーコードを読んでくれて、そのまま最後にフラグが投げられてきます

 

FLAG: ADCTF_4R3_y0U_B4rC0d3_R34D3r

ADCTF2014 [06] paths

うげっ

There are many paths, and search for shortest path from start to goal.
(to, cost)
paths.py

グラフですかー

 

僕は分からないので、ネットの海に落ちてたダイクストラ法の実装をそのまま使いますわ

solve_paths.py Dijkstra.py

solve_paths.pyを実行すれば最短のルートが算出され、フラグが出てきます

今回はちょっとサボりwriteupでしたw

 

FLAG: ADCTF_G0_go_5hOr7E57_PaTh

ADCTF2014 [05] shooting

助けてJSおじさーん

今回のCTFには、チーム名tuat_mccで登録しているのですが、私ShiftCropsしかやってませんwww

チームメイトのicchyは別垢取ってるし、JSおじさんことモンジサンは不参加です

なので、結局助けを読んでも誰も来てくれないのでした。

 

さてさて、JSのシューティングゲームですね

一回で10000点入るようにしたり、ステージの条件分岐とか書き換えても出来ない。

どうしようかなぁ

・・・あれ、これって弾が当たっても死ななきゃ良いだけじゃない?

[js] var l = enchant.Class.create(j, { initialize: function(e, t) { j.call(this, e, t, Math.PI); this.addEventListener($UPcs4hr8oKgbbqAesfT(1), function() { //(player.within(this, 8)) ? (game.end()) : 0; }) } }) [/js]

最後のところで死亡判定をしているようなので、上のようにコメントアウト これで無敵だぜ!!

shootingしにましぇん

 

FLAG: ADCTF_1mP05518L3_STG

 

ADCTF2014 [04] easyone

reversing来ましたねー

あんまし得意ではないんですよ(汗

This is very easy crackme. easyone

どうやら64bitのelfのようですね

objdumpで見てみると、Flagを生成してるらしき部分がscanfの後に続きます

0x0000000000400625 <+56>: callq 0x4004f0 <__isoc99_scanf@plt> 0x000000000040062a <+61>: movb $0x37,-0x2a(%rbp) 0x000000000040062e <+65>: movb $0x33,-0x1e(%rbp) 0x0000000000400632 <+69>: movb $0x31,-0x25(%rbp) 0x0000000000400636 <+73>: movb $0x48,-0x29(%rbp) 0x000000000040063a <+77>: movb $0x37,-0x22(%rbp) 0x000000000040063e <+81>: movb $0x4f,-0x18(%rbp) 0x0000000000400642 <+85>: movb $0x35,-0x1c(%rbp) 以下略

 

生成が終わったところでブレイクポイントを仕掛け、そのままスタックを覗いてやればいい感じですね

(gdb) b *0x4006a2 Breakpoint 1 at 0x4006a2 (gdb) r Starting program: /home/yutaro/programs/CTF/adctf/easyone password: aaaa Breakpoint 1, 0x00000000004006a2 in main () (gdb) x/s $rbp-0x30 0x7fffffffded0: "ADCTF_7H15_15_7oO_345y_FOR_M3"

 

FLAG: ADCTF_7H15_15_7oO_345y_FOR_M3

ADCTF2014 [03] listen

今回は壊れたwavファイルが提供されています。

まぁ皆さん、まずはヘキサエディタで開きますよね?

僕もそうです

すると・・・

listen赤く色づけしたところがどうも怪しいです。

ひとまず、ヘッダの構成をみてみませう

0x1C-0x1f: 44100 byte/s

0x22-0x24: 16bit/sampleすなわち2byte/sample

0x18-0x1b: サンプリングレート 1Hz?????

やっぱりサンプリングレート変です

 

44100/2=22050Hzより、本来の値は0x5622であるべきです

なのでそのように書き換えて完成です!(エンディアンに注意)

後は聞くだけー

 

FLAG: ADCTF_SOUNDS_GOOD

ADCTF2014 [02] alert man

こんにちは

二日目がやってまいりました。

本日はweb問題のようですね

Can you alert('XSS')? alert man

どうやら、打った文字をtweetして、下に列挙するようですね

 

さて、解法です

1.正攻法 <img src=x onerror=alert(/XSS/.source)> xという画像を読み込もうとしても当然のエラー故、XSSのアラートが発動

alert man

 

2.JS読む ''(アンダースコア)っていう変数になにやら文字列を突っ込んでいるようなので、consoleを開いてeval() すると、こんな関数が

[js] f=0; cs=[5010175210,5010175222,5010175227,5010175166,5010175224,5010175218,5010175231,5010175225,5010175166,5010175223,5010175213,5010175140,5010175166,5010175199,5010175194,5010175197,5010175178,5010175192,5010175169,5010175191,5010175169,5010175146,5010175187,5010175169,5010175146,5010175218,5010175149,5010175180,5010175210,5010175169,5010175187,5010175146,5010175216]; t=''; for(i=0;i<cs.length;i++){ t+=String.fromCharCode(cs[i]^0x123456789+123456789) } [/js]

主要部分を摘出しました。

まあともかく、これをそのままconsoleにでも突っ込めばおk

 

FLAG:ADCTF_I_4M_4l3Rt_M4n

ADCTF2014 [01] warmup

一年半ぶりの書き込みとなりました。

お久しぶりです。

さて、今日から始まります Advent Calender CTFに挑戦します。

拙いWriteupになるとは思いますが、25日間頑張っていこうと思いますー

 

早速初日の問題です。

Today is warmup.
0x41444354465f57334c43304d335f37305f414443374632303134

これあれだ、文字列16進表記にしただけだ

 

ってなわけで

Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> '41444354465f57334c43304d335f37305f414443374632303134'.decode('hex') 'ADCTF_W3LC0M3_70_ADC7F2014'

でけた

 

FLAG: ADCTF_W3LC0M3_70_ADC7F2014