私は、バッファオーバーフローに対して脆弱なプログラムを悪用する宿題に取り組んでいます。これを行うには、大きなchar
配列を作成し、最初に操作手順なしで完全に埋めます。
私がやるべきことは、悪意のあるコードをバッファのどこかにコピーし(この部分は問題なく実行できます)、悪意のあるコードがどこにあるかを指すように、悪用可能な関数のリターンアドレスをなんらかの方法で変更することだと思います。
設定したいアドレス(たとえば½¾¿º
)はわかっていますが、警告が表示され、その原因がわかりません。
これは(本質的に)警告を引き起こしているコードです:
int start_of_return_address = 10;
chars[start_of_return_address + 0] = '½';
chars[start_of_return_address + 1] = '¾';
chars[start_of_return_address + 2] = '¿';
chars[start_of_return_address + 3] = 'º';
各割り当てについて私が受け取る警告は次のとおりです。
warning: overflow in implicit constant conversion
warning: multi-character character constant
bdbebfba
(悪意のあるコードのアドレス)を文字(yielding )に変換してアドレスを取得しました½¾¿º
。
警告の原因となる可能性のあるアイデア、またはアドレスを文字配列にコピーする別の方法についてのアイデアはありますか?
これは宿題用ですのでご注意ください。