こんにちは。ゆーろんです。
記録がてら、今回もCTFの備忘録をぼちぼち書いていきます。
ぼちぼち解くことを目指すので複数日またぐこともあると思いますが、よろしくお願いします。
問題
国内では有名な ksnctf です。
今回の問題は以下ソースコードです。
Programming - ksnctf
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);
}
C++のソースコードが与えられています。
なぞにTabや空白があるので気味の悪いコードとなっています。
解いてみる
とりあえずC++なのでオンラインコンパイラを使用します。
実行結果は以下の通り
実行環境にはVSではなくideone.comというオンラインコンバータを使用。
結果から「標準入力が空」、「FROG_This_is_wrong_:(」と表示の2つの情報を得られました。
標準入力が求められてないのにも関わらず、それが表示されたことにも疑問に持ちながらも解析のための情報をここで整理します。
- 謎の空白とTab文字に関して調査
- C++コードの解析
考えられる以上の2点に絞って調査します。
前者に関して調べるとWhiteSpaceなるスペースとTabで構成された難解プログラミング言語が存在することが判明。
ということで早速WhiteSpaceでコードを実行。
結果から「標準入力が空」、「PIN: 」と表示の2つの情報を得られました。
なにやら標準入力でPINを入力するようです。
コード解析のためにオンラインデバッカーを利用します。
アセンブリのようなものの中にPINコードっぽい、いくつか数字があります。
標準入力に入力してみるとFLAGが表示されました。
感想
c++に気がとられそうになりましたが、クリアできてよかったです。
今後はぼちぼちセキュリティ系も触っていきたいですね~。
関連記事
-
【Kali Linux対応】Monitorモード対応無線アダプタ AWUS036ACUの紹介
こんにちはゆーろんです。 先日、Amazonにて台湾の企業であるAlfa Networkの提供するAWU036シリーズのAWUS…
-
Vagrant+VirtualBoxで仮想サーバ構築②Zabbixサーバ編
こんにちは。ゆーろんです。 今回はVagrant+VirtualBoxで監視ツールであるZabbixサーバ(Manager)と監…
-
Vagrant+VirtualBoxで仮想サーバ構築①Webサーバ編
こんにちは、ゆーろんです。 今回はVagrant+VirtualBoxでWebサーバをローカルで建ててみますので、手順をまとめま…