2016/11/12 サイバー甲子園 writeup
チームomakase
京都すばる高校で、チーム「omakase」としてst98さんと出場した。
このst98さんがなかなかのプロで、その速さについていくのに必死だった(flag提出したら先に解かれてた)。まぁ、これは僕の技術不足がいけないんだけどもね……
結果
サイバー甲子園、omakaseは準優勝でした! #seccon pic.twitter.com/BxURq7KS3H
— st98 (@st98_) 2016年11月12日
スコア{2410}で準優勝です!
本当に申し訳ない気持ちで一杯です。
じゃあ、お前は何やってたんだよ?
はい、見事に人権が無くなりました。本当にありがとうごさいました。
初めてのwriteup
書いていきます。初めてなので大目に見てください。
No1. Sample10 TRY FIRST
flagがそのまま書いてある。コピペ
SECCON{Cyber_Koshien}
No2. Binary100 sl is not ls
競技中解けなかった。
slの貨物(?)載せる側面にflagが書いてあるらしい。
No3. Binary100 Assembler Tanka
パス
No4. Binary300 fakeransom
パス
No5. Binary200 guess the flag
Clearされてたので、とばした。
No6. Crypto100 gokai?
問題の文字列を5回base16でデコード。
SECCON{BASE64}
No7. Crypto100 very easy
文字分割・連結の問題。pythonでパパパっとデコードして、終わりっ
SECCON{hex_dump}
No8. Crypto200 decode the flag
何を思ったのか、スクリプトを作らず手打ちで復号した。が、Clearされてて、途中で放棄。何やってんの。。。
No9. Crypto100 onlineyosen
競技中解けなかった。st98さんは画像上側に隠されている文字列に気づきClearさせました。解説タイムではどうやら、exifを用いた解法もあるらしく以後挑戦してみる。
No10. Network100 gettheflag
パス
No11. Network200 sample
パス
No12. Network200 get the flag
パス
No13. Programming100 megrep
開くとBzBzBz...とBzしか書かれてない。stirlingのビットイメージでflagが出てくる。
SECCON{bsdbanner}
No14. Programming100 x2.txt
パス
No15. Programming200 decode the trapezoid Q R code
[更新] OpenCVでやってみた。
#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>int main(int argc, char **argv) {
IplImage *srcImg = cvLoadImage("qrcode.png",
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if (srcImg == NULL){
printf("Can't Load Image.\n");
return -1;
}
IplImage *dstImg = cvCreateImage(cvGetSize(srcImg), IPL_DEPTH_8U, 3);// 変換前座標 3点
CvPoint2D32f original = { cvPoint2D32f(0, 0),
cvPoint2D32f(srcImg->width, 0),
cvPoint2D32f(0, srcImg->height) };
// 変換後座標 3点
CvPoint2D32f translate = { cvPoint2D32f(230, 30),
cvPoint2D32f(530, 30),
cvPoint2D32f(30, 130) };CvMat *affineMatrix = cvCreateMat(2, 3, CV_32FC1);
// 変換行列を求める
cvGetAffineTransform(original, translate, affineMatrix);// 変換行列を適用する(アフィン変換)
cvWarpAffine(srcImg, dstImg, affineMatrix,
CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS, cvScalarAll(0));cvNamedWindow("変換前", CV_WINDOW_AUTOSIZE);
cvNamedWindow("変換後", CV_WINDOW_AUTOSIZE);
cvShowImage("変換前", srcImg);
cvShowImage("変換後", dstImg);cvWaitKey(0);
cvReleaseImage(&srcImg);
cvReleaseImage(&dstImg);
cvDestroyAllWindows();return 0;
}
やっているのはアフィン変換。読めるよう値を調整していく。
これで読めるはず。
SECCON{The QR code system was invented by Denso Wave in Japan}
No16. Programming100 sum primes
一番時間かかった。嫌な奴。当分は見たくない問題。
No17. Web100 sessio nhijack
パス
No18. Trivia100 blacked out PDF
黒塗り。こいつ去年も出てたな。コピペ
SECCON{kuronuri_ha_dame_zettai}
No19. Trivia200 blacked out PDF again
ん?コピペできないぞ。と、思索した結果コピープロテクトかかってました。
PDF パスワード解除 - 無料PDFパスワード解析ウェブサービス
上サイトでプロテクト解除。コピペ
SECCON{1234567890}
No20. Trivia300 how much a fine?
直感で埋めた。
SECCON{42576}
No21. Trivia100 acronym
Clearされてた。ググれば出るでしょう。
競技を終えて
とりあえず、皆さんお疲れ様でした。
内容としては、binaryとcrypto問がかなりこだわって作られているため楽しめました。
あとは、苦手(web,net)が結構浮彫になっていて今後の課題が見えてきました。
次回は、オンライン予選で会いましょう!
ダブった… pic.twitter.com/AouUpP3KDX
— crane (@crane_memory) 2016年11月12日