シュ~カツctf Writeupその1
大分間が空きましたが元気です。がんばります
色々あって引きこもってました。 現在もわりと引きこもってます。色々あって今にいたります
年末に風邪をこじらせている間にいつの間にか年も越して 気がつけば2月…
最近はCTFなどはにわかに参加しているくらいで 体を壊したり落ち込んだりアレでソレで 特に書く内容もない現状です。
せっかくなので、 他のwriteupさまの内容を見たので、雑ですが書いてみました。
一応シュ~カツ(?)としてネットエージェントさまのシューカツCTF(2017年卒採用特別選考CTF)に参加していました。
前年はusiomisakiにやられてしまっていたので、今年こそは。。。と頑張ってました。
ちなみに自分も最後まで解けてないので、続きをだれか…(以下同文)
mondai1
問題ページのHTMLのソースに去年の問題文があったので、
echo LzYxMDIvcGouaGJwLy86cHR0aA== | base64 -D | rev http://pbh.jp/2016/
とかして2016の部分を2017にすると見れたので、良かったということで最後まで解いてなかった…です。
一応ちゃんと正攻法?で解きました。 base64でデコードして3文字ずらすだけだったようです
$cat solv.rb
require 'base64'
Base64.decode64("c2VrMW1zMjUzNDo=").each_char do |s|
print (s.ord - 3).chr
end
$ruby solv.rb
pbh.jp/2017
mondai2
マイナンバーらしいです…
755304ac4117729248f05fd12203735598d727dd
MD5の総当りっぽいので頑張ってもらいました。
mondai3.zip:462365337210
mondai3
画像が2つ入ってたのでクリスタで重ねてレイヤーを減算にしたらそれっぽい文字が出たので

mondai4.zip:Macrocheira
mondai4
ポートスキャンすると、3つのポートが空いていたので、
MQTTとRedisとmemcachedにつなげて適当に探せば色々出ました
kurobeとtateyamaで検索したらアルペンルートとか出てきたのでそれをメチャクチャ入れまくってたりしましたが、結局1883+6379+11211というヒントでいけました。
mondai5.zip::kurobetateyamatoyama
あとたまにokayamaとか偽passwordが流れてきてメッチャ迷った。すこぶる困った。
MQTTで遊んでたときの

mondai5
これに4,5日くらいかかってアレでした
某アニメを見てなかったためにヒントにも気付けませんでした。見ました。 txtファイルの更新日時で検索するとこのツイート
友利奈緒が文部科学大臣賞を受ける図#seccon pic.twitter.com/Pd6sCIqwcr
— lumin ハッカーフレンズ (@lumin) 2016年1月31日
が出てくるので、SECCONとかtomorinaoとかかなと思っても出来ず、 zipを眺めまぐったりしたり 試行錯誤の末大文字小文字を総当りすると解凍できました。ESP…
mondai6.zip:TomoriNao
mondai6
適当にdotpeekなどで処理を見ると、しんかんせんえきいんぜで21文字の回文を作れば良いっぽいので

mondai7.zip:しんかんせんえきいんぜんいきえんせんかんし
mondai7
解き方忘れてしまっていたので解き直してました。turai
pcapを読むとそれらしいファイルirainaiyou1.zipをアップロードしている事がわかったり
他にもニコニコ大百科で何か見ていることとかわかるけど結局よくわかんない

irainaiyou1.zipのパスワードっぽい文字列もアップロード時の削除用のhanamogeraくらいで試行錯誤組み替えて試してもダメだったり

結局総当りしようと思い、まずは適当に辞書で回そうとこのような辞書を使わせていただいてこんな感じで適当にやったところ何か出てきたので
$ cat brute.rb
path = "john.txt"
max = File.read(path).count("\n")
open(path) do |f|
f.each_line.with_index do |pass,i|
# puts i.to_s + "/" + max.to_s
s = system "7za x -p#{pass.chop} irainaiyou1.zip -aoa > /dev/null 2> /dev/null"
if s
puts pass
break
end
end
end%$ ruby brute.rb
alexander
alexanderでirainaiyou1.zipを解凍
出てきた画像ko'tae.jpgの文字で解凍出来ました

mondai8.zip:ログ・ググザジョ
グロンギ語で「もうすぐだよ」らしいですね。zipのpasswordにunicodeが使いづらかったのでLhaplusを使うと楽でした。
これもわりと苦戦した というか色々アレだった…
mondai8
mondai8は簡単になった方で解きました
truecryptで暗号化されているので、またもや先程の辞書を使わせていただいてtruecrackでアレしたり

passwordが1234なのでマウントすると見えないファイルがいくつかあるので

あとは野菜レシピ.docxのパスワードが何故かpasswordだったので開くと謎フォントの答えが出てくる

ので適当なフォントにいじって

mondai9.zipFadeWhitePearl
mondai9
宇佐美定行 「ワキミウオンズサミウケサワキケキワナオンワゼケサミサケサ ズキアウオガミゼインミゼケキワキケサインケキケサアナワウイウズキズゼ アンミガアンケキアウワゼミンズナ イナアゼワキワンアナミガミガイゼミンミゼミウオンワン ワサミガミガオガワンケキワナオンケゼアナオキアゼワサミガズガズキインズナ ミゼアウズキケキアキケキオウイゼイキケサアキズウアキイキケキオサイガミガミゼ オンイサケガワンケキインケサワキケサアキミゼインミゼケキワキケサインケキケサオガズゼワナオンイガオンイキケキ イガオンイナワサイウインケキオガイキアウアンケキケサアキミキズナ アキオンワガアウミキケンオガアンミガオキミガイキアウミキアウ ミウミガミガオガケゼワキズキケキミゼミゼインミゼケキケゼケキワキオガイナアゼワキワン イナオキアゼアンアキワンワキオガミキズキケキミンズガオキオゼ ワウインズウワサミガケゼイキケキオガズキケンケサ ワキケサインケキケサケンズウオガケナアウミナケキオンケンアキ」
らしいです
宇佐美定行とかで調べると、上杉暗号というのが出てくるので
2文字ずつ使われてる文字を調べたりして
$ cat s.rb
f = open("mondai9.txt")
g0 = []
g1 = []
f.each_line do |l|
l.split("").each_slice(2) do |n|
g0.push(n[0])
g1.push(n[1])
end
end
p g0.uniq
p g1.uniq
$ ruby s.rb
["ワ", "ミ", "オ", "ズ", "ケ", "ア", "イ"]
["キ", "ウ", "ン", "サ", "ナ", "ゼ", "ガ"]
[“ワ”, “ミ”, “オ”, “ズ”, “ケ”, “ア”, “イ”]と
[“キ”, “ウ”, “ン”, “サ”, “ナ”, “ゼ”, “ガ”]から、
あずみおいわけ と うぜんながさきかなと思って復号化
$ cat uesugi.rb
# encoding: utf-8
# 上杉暗号
sx, sy = 'あずみおいわけ うぜんながさき'.split
iroha_table = [
%w(い ろ は に ほ へ と),
%w(ち り ぬ る を わ か),
%w(よ た れ そ つ ね な),
%w(ら む う ゐ の お く),
%w(や ま け ふ こ え て),
%w(あ さ き ゆ め み し),
%w(ゑ ひ も せ す ん "),
]
File.open('mondai9.txt') do |file|
file.each_line do |enc|
enc.chop!
result = []
enc.split(//).each_slice(2) do |a,b|
x = sx.index(a)
y = sy.index(b)
ch = iroha_table[x][y]
result << ch
end
puts "#{result.join}"
end
end
$ ruby uesugi.rb
しようわよんし"ゆうさんねん
かいのたけた"しんけ"んにあやかり
はつは"いされる
ふろしきにつつまれたようき
みつつのき"ゆうひにくろみつをかける
たいか"と"らまてんとちとて"おこつた
うえすき"けんしんとたけた"しんけ"んのりゆうこうて"
こうふみやけ"のていは"んとなる
とうめいなものはつくつていない
よつつのひしか"たたけた"ひ"しのふろしき
ふくろはときしのなか"れをくむ
あけちみつひて"のかもん
しんけ"んもちのせいそ"うもと
mondai10.zip:桔梗屋
というわけで

エクストリーム編につづく。。。