= gradius (binary 100) = 与えられたファイルを実行すると入力待ちとなり、入力すると数字と'wrong'という文字列が返却された。 いろいろ試していると、数字は先頭からの合っている文字列だろうと推測出来た。 {{{ $ ./gradius > a < 0 < wrong $ ./gradius > k < 1 < wrong }}} プログラムを書いて先頭から1文字ずつ特定していった。 {{{#!highlight ruby require 'shellwords' r, cnt = '', 1 while true (1..255).each do |i| ret = `echo #{Shellwords.escape(r + i.chr)} | ./gradius` unless /wrong/ =~ ret puts ret exit 0 end if ret.split[0].to_i == cnt r += i.chr p r cnt += 1 end end end }}} {{{ $ ruby solve.rb "k" "kk" "kkj" "kkjj" "kkjjh" "kkjjhl" "kkjjhlh" "kkjjhlhl" "kkjjhlhlb" FLAG{!!D4GG3R!!} }}} ↑↑↓↓←→←→BA