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

MMA

bruteforce

問題

Calculate the flag.

Note: Please don't misunderstand, DO NOT bruteforce the server.

bruteforce

メモ

解法

逆アセンブルして読むとsigsetjmpとSIGFPEとlongjmpを用いて, ゼロ除算が発生したらsigsetjmpしたところに8を返して戻るようになっている。 また,60108cにある変数は,ゼロ除算が発生した時のみ1になる。

sigsetjmpした後に呼び出される4008c0の関数は

   1 for (int i = 2; i != arg1; i++) {
   2     1 / (arg1 % i);
   3 }

を計算しているが,これはarg1が素数の時のみ0除算が発生しない。 よって素数の時のみ0x8(%rsp)がカウントアップされ,0x8(%rsp)が10000000になった時にフラグが表示される。

"10000000th prime"を検索 → Wikipediaに "179424673 – 10000000th prime number"

ADCTF_179424673

ytoku/CTF/Writeup/AdventCalendarCTF2014/2014-12-12 (最終更新日時 2014-12-12 01:53:47 更新者 ytoku)