shellcodeの実装と書式文字列攻撃

shellcodeの実装

 

shellcodeを実行できるようにするために、何らかの文字列を関数として実行する必要が在る。

文字列の配列を準備

文字列の配列を関数ポインタにキャストする

その関数を実行する

関数ポインタ型 (void(*) ())

 

 

printf関数は第一引数に指定されたフォーマット指定子の数だけスタックを走査し、該当のアドレスのデータを出力する。フォーマット指定子を増やすことで、スタックの中身を自由に見ることができ、書式文字列攻撃と呼ぶ。