ふるつき

記事と内容がないです

ctf for ビギナーズ 奈良(Attack&Defense)に参加したよ

 Defense書けない。

 それはそれとして、かのNAISTで行われた学生限定のctf4b、Attack&Defense大会に参加してきました。わたしはある@turn_dnさんと二人でチームでした。NOPという名前です。


@turn_dnさんに貼っていいよと言われたので貼ります。しばらくしたらWriteUp上がるかも turn-up.hatenablog.com

追記。これや

turn-up.hatenablog.com


 どこかでスコア見たらわかりますが、下の方になってしまいました。つら。そういう愚痴とかも含めて書きたい。時系列じゃないです

  • 空気を震わせるのはセキュアじゃないのでSlackたてたけどインタネットに繋げなくて活用せずつら
  • とりあえずpiにraspberryで入るのはできた。homeにcommandとかいうふぁいるがあったから、実行したらフラグ出た
  • ただし、どこに投げればいいかわからなくて温めてた(回答フォームのチームの並びがipと一致してることに気がついてなかった)。おかげでFirstAC(?)逃すのあったつらい
  • 自分のところのpiのpass替えたけどなんかそのへんよくわからない感じでよくわかってない
  • piではいるとcatとかviとか全然つかえないのつらいっつってcommandに何が書いてあるのかわからなかった。終わり前にmawkを使えば良いということがわかったけれど、特に情報もない/etc/passwdをみるなどしていた。
  • Webの方は、とりあえず画像アップローダphp上げられそうなのは直してもらった。
  • 本来きっと顕現がないであろう場所に入れる&10 * 100ptの情報が拾える場所発見。とりあえず情報拾って書き換えとく(やっぱり投げれない)
  • 投げる場所がわかった(全チームに投げていった)ので投げた。FirstAC。Webは最初だったらしい
  • せっかくなのでwgetで落としてpythonで整形するスクリプト書いてたけどだめだめだった。遅い&精度だめだめ。(ctf4b奈良A&Dで悔しい思いをした話 - ヾノ*>ㅅ<)ノシ帳こことか見てると凹む)それでもいくらかはなんとか
  • UserAgentでXSSできることを発見。使い方がわからずに「ひま〜〜」とかはつどうさせてた。だれか踏んづけてたら嬉しい。
  • SQLiできるっぽいところも見つけた。使い方がわからない。 @turn_dnさんへの報告をわすれる。だめじゃこりゃ
  • raspiのsshを落とされたらしい。ログインできずつら
  • ずっとログインできずDefenseポイントももらえずWebもいじれず死
  • WebのConfigファイルが消えてエラー吐いてた。なんでや。

 終わってから思ったこと - ひとつのチームから1100pt以上絞れないのつらい - ssh落とされるとすることなくてつらい - 二人だと手が足りなくてつらい - MVCPHPSQLもだめでつらい - SecurityCampに行った人がたくさんでダメでしょっていってる(いわない - 最後の方DefensePtがインフレしたのバカを見る人が多くて辛い - 本当にNOPしてたほうがつよかったつらい - Webのadminみつけられなかったつらい - pythonかけないつらい

 ほかにもつらいことあったら書く。気付きは結構早い方だったと思うししっかりものにできれば勝てるような感じだった。それもあって、腑に落ちないというか燻ってるので再チャレンジしたい

追記

 一応書いたPythonの雑魚いコードあげようという気になったので上げます。笑え

import re
import sys

def fun(s):
    p = re.compile("value=.+>")
    (st, end) = p.search(s).span()
    return s[st+7:end-2]


def fun2(s):
    p = re.compile("value=.+ ")
    (st, end) = p.search(s).span()
    return s[st+7:end-3]

f = open("6_" + sys.argv[1]).read().split("\n")
# f = open(""+i+"_"+j).read().split("\n")
lines = {33, 37, 29,    102, 41} 
ie = 47
iee = 93

datas = []
for l in lines:
    datas.append(fun(f[l - 1]))


for h in range(ie, iee+1):
    if "selected" in f[h]:
        datas.append(fun2(f[h]))

datas.append(fun(f[97]))
data2 = []
data2.append(datas[4])
data2.append(datas[1])
data2.append(datas[2])
data2.append(datas[3])
data2.append(datas[0])
data2.append(datas[5])
data2.append(datas[6])
print(",".join(data2),end="\n")

なにやってるかわかんないと思うけれど、htmlそのまま落としてきたやつを頑張って読んでます