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です
対応表と見比べて、実装しましたー
実行して待ってれば、10回バーコードを読んでくれて、そのまま最後にフラグが投げられてきます
FLAG: ADCTF_4R3_y0U_B4rC0d3_R34D3r
ADCTF2014 [06] paths
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]
最後のところで死亡判定をしているようなので、上のようにコメントアウト これで無敵だぜ!!
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ファイルが提供されています。
まぁ皆さん、まずはヘキサエディタで開きますよね?
僕もそうです
すると・・・
ひとまず、ヘッダの構成をみてみませう
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のアラートが発動
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