ksnctfの7問目、Programmingを解こうとしたけど解けなかった話。
これを実行してみると...
綺麗にしたコードを色々いじってフラグを出そうとしてみたが全く手掛かりがない。
てかこのコードからFROG_This_is_wrong_:(て表示させるって芸術的すぎる。。
問題
問題ページにはc++のコードっぽいものが書いてありました。
空白やタブばかりでぐちゃぐちゃだったので綺麗にしてみた。(これが落とし穴...)
#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); }
これを実行してみると...
FROG_This_is_wrong_:(違うっぽい。
綺麗にしたコードを色々いじってフラグを出そうとしてみたが全く手掛かりがない。
てかこのコードからFROG_This_is_wrong_:(て表示させるって芸術的すぎる。。
解法
ここでヒントを見てみると、どうやら"whitespace"というものが関係するらしい。
ググってみると、どうやらタブとスペースだけでコードが書けて他の文字はコメント扱いになってしまうものらしい。
whitespaceの実行にかなり手こずったが、このサイトで実行とデバッグができた。
実行するとPINが求められるので、デバッグした時にめっちゃpushしてくる値があったのでそれを入力するとFLAGゲット。
whitespaceの実行にかなり手こずったが、このサイトで実行とデバッグができた。
実行するとPINが求められるので、デバッグした時にめっちゃpushしてくる値があったのでそれを入力するとFLAGゲット。
まとめ
面白い問題だった。。
最近ksnctfしかやってない気がする。。
コメント
コメントを投稿