初めまして、DP部の今井です。 バイナリエクスプロイトのROP(Return-oriented programming)をAVRマイコンに対して試してみた話です。 注意:本記事の内容によってトラブルなどが発生した場合でも、当社は一切の責任を負いかねます。また、本情報の悪用はしないでください。 概要 環境 脆弱性 AVRアーキテクチャについて メモリ レジスタ 関数呼び出しに関して return addressを書き換えてみる Program Memory領域の書き換え Program Memoryに書き込む命令 Program Memory内のブートローダーの確認 Optiboot spm命令とrop gadget おわりに 概要 今回はAVRマイコンが乗っているArduino Uno Rev3を使いました。 Arduino IDEで以下のコードを作成しArduino Unoに書き込んだ時