shellcodeの実装と書式文字列攻撃
shellcodeの実装
shellcodeを実行できるようにするために、何らかの文字列を関数として実行する必要が在る。
文字列の配列を準備
文字列の配列を関数ポインタにキャストする
その関数を実行する
関数ポインタ型 (void(*) ())
printf関数は第一引数に指定されたフォーマット指定子の数だけスタックを走査し、該当のアドレスのデータを出力する。フォーマット指定子を増やすことで、スタックの中身を自由に見ることができ、書式文字列攻撃と呼ぶ。