ksnctf #7 “Programming”を解く
Problem
program.cppが与えらておりそこからFlagを手に入れればよい。
Solution
とりあえずprogram.cppを開いてみる。
#include <stdio.h>
#include <string.h>
int main
()
{ const char *
s =
" "
"0123456789"
" "
" "
" "
"ABCDEFGHIJ" ;
printf (
"%c" , strlen
(s)
); int i = 020000000 + 001000000 +
000600000
+000040000
+000007000
+000000500
+000000020
+000000002 ;
printf (
"%s"
,& i
)
;
long
long
l
=
2LL
*
11LL
*
229LL
*
614741LL
*
9576751LL
+
5LL
;
printf
(
"%s"
,
&
l
)
;
float
f =
1.0962664770776731080774868826855754386638240000e-38f
;
printf( "%s"
,
&f
)
;
double
d =
6.7386412564254706622868098890859398199406890000e-308
;
printf
("%s"
,&d);
}
インデントがむちゃくちゃだがそのまま実行してみると
% gcc program.cpp
% ./a.out
FROG_This_is_wrong_:(
どうやらこれはC++ではなくて、whitespaceという難読プログラミング言語らしい。
実行環境がないのでオンラインで探してみると http://vii5ard.github.io/whitespace/ というサイトで実行できることが分かった。
早速コピペして実行してみると、
PINコードを求められるが横のデバッグの画面にある33355524を入力するとlabel_0のところに飛び、Flagが手に入る。
CTF, セキュリティの参考資料
Udemy
個人的にUdemyが動画で分かりやすいし、値段も安いのでおすすめです。
実践的なものが特に役立ちます。
ホワイトハッカー養成講座(ハッキングツール、Webアプリ攻略、不正侵入検知)
ホワイトハッカー養成講座 (インシデントハンドリング&Windowsアタック編)
書籍
- セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方
- セキュリティコンテストのためのCTF問題集
- デバッガによるx86プログラム解析入門
- リバースエンジニアリングバイブル
- 大熱血アセンブラ入門
- 楽しいバイナリの歩き方
- Reverse Engineering for Beginners
- HACKING: 美しき策謀
- 秘密の国のアリス
- 暗号解読
- 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践 第2版
コメント