Pragyan CTF 2017: Answer to Everything

,

問題文は以下。

Shal has got a binary. It contains the name of a wise man and his flag. He is unable to solve it. Submit the flag to unlock the secrets of the universe.

カテゴリはBinary Exploitsであるが与えられるバイナリには脆弱性などは存在せず、単に以下のようなコードをそのままコンパイルしたもの。 またmain.exeという名前であるがPEでなくELFであった。

int main() {
    int n;
    printf("Gimme: ");
    scanf("%d", &n);
    if (n == 42) {
        puts("Cipher from Bill\n"
            "Submit without any tags\n"
            "#kdudpeh");
    } else {
        puts("YOUSUCK");
    }
    return 0;
}

上記の情報だけからflagに辿り着かなければならない。以下のようにすればflagが得られる:

  1. 怪しい文字列 #kdudpeh から始める
  2. Submit without any tagsとあるので#を除去
  3. rot$23$してharambe (ゴリラ、特に西ローランドゴリラのある個体の名前: https://en.wikipedia.org/wiki/Killing_of_Harambe)
  4. 問題文の冒頭Shal has got a binary.なのでShalつまりSHA1して31a0d851ea10ad886ad4e99ed05892de06998ab9

よって flag: pragyanctf{31a0d851ea10ad886ad4e99ed05892de06998ab9}