覚書

だいたいC#で何か書いてます。だいたい競プロ。

ksnctfとかいうものに出会った

SECCONとか参加してみたいけど前提知識とかないからどっかで勉強してから行きたいなーとか思ってたら面白そうなサイトと出会った。

https://ksnctf.sweetduet.info/

ksnctf
コンピュータセキュリティに関する問題を出題します。 各問題からFLAG_123456xyzという形式の答え(Flag)を探してください。 Twitterでログインすると、ランキングに参加できます。
ctfq.sweetduet.infoの指定されたポート以外への攻撃はしないでください。
Attack is allowed only to ctfq.sweetduet.info and specified ports only.

目的は単純に問題出すから答え当てろみたいなものらしい。これはゆるふわな感じでとてもいいと思った。最後の二行怖いけど。

https://ksnctf.sweetduet.info/problem/1

Test Problem 1pt
This is a test problem. Submit the following flag and make sure that you can get points.

FLAG_SRORGLnTh2Q5fTwu

この一問目はFLAG以下をコピーペーストするだけで良いらしい。
二問目に進む

https://ksnctf.sweetduet.info/problem/2

f:id:sh10:20170613121455p:plain

意味がわからない。というかまず英語ですらない。キモい。
とりあえずぐぐってみるとシーザー暗号だとかROT13だとか呼ばれてる暗号らしい。
全てのアルファベットを13ずらして表記しているらしいのでとりあえずコード書いて平文に直してもらう。

#include "stdafx.h"

int main()
{
	char str[] = {"EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg.EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr.Synt vf SYNTFjmtkOWFNZdjkkNH.Vafreg na haqrefpber vzzrqvngryl nsgre SYNT." };
	for (int i = 0; i < sizeof(str); i++) 
	{
		if ((str[i] >= 'a'&&str[i] <= 'm')|| (str[i] >= 'A'&&str[i] <= 'M'))
		{
			str[i] += 13;
		}
		else if((str[i] >= 'n'&&str[i] <= 'z') || (str[i] >= 'N'&&str[i] <= 'Z'))
		{
			str[i] -= 13;
		}
	}
	printf_s("%s", str);
	return 0;
}

結果

ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet.ROT XIII is an example of the Caesar cipher, developed in ancient Rome.Flag is (解).Insert an underscore immediately after FLAG.

解は伏せたほうがいい風習があるらしいのでそれに従う。

大まかに訳すると「ROT13はアルファベット後ろ13文字で置き換えるシンプルな暗号置換で、古代ローマで開発されたシーザー暗号の例だよ。FLAGは(解)でFLAGの直後にアンダーバーいれるよ」とのことらしい。

送ってみる。

f:id:sh10:20170613130338p:plain

正解画面が出てきた。今はとりあえずもう少しやってみようかなぁって感じ。