ログイン
編集不可のページディスカッション情報添付ファイル
CTF/Writeup/tkbctf4/gradius

MMA

gradius (binary 100)

与えられたファイルを実行すると入力待ちとなり、入力すると数字と'wrong'という文字列が返却された。 いろいろ試していると、数字は先頭からの合っている文字列だろうと推測出来た。

$ ./gradius
> a
< 0
< wrong

$ ./gradius
> k
< 1
< wrong

プログラムを書いて先頭から1文字ずつ特定していった。

   1 require 'shellwords'
   2 r, cnt = '', 1
   3 while true
   4   (1..255).each do |i|
   5     ret = `echo #{Shellwords.escape(r + i.chr)} | ./gradius`
   6     unless /wrong/ =~ ret
   7       puts ret
   8       exit 0
   9     end
  10     if ret.split[0].to_i == cnt
  11       r += i.chr
  12       p r
  13       cnt += 1
  14     end
  15   end
  16 end

$ ruby solve.rb
"k"
"kk"
"kkj"
"kkjj"
"kkjjh"
"kkjjhl"
"kkjjhlh"
"kkjjhlhl"
"kkjjhlhlb"
FLAG{!!D4GG3R!!}

↑↑↓↓←→←→BA

CTF/Writeup/tkbctf4/gradius (最終更新日時 2014-11-03 23:45:12 更新者 ytoku)