web-dev-qa-db-ja.com

ROPで「jmp」を使用する方法

ROPチェーンをまとめようとしています。次のことを行うガジェットを探しています。

mov rdi, rdx ; mov rbp, rsp ; ret;

しかし、代わりに、私はこのようなガジェットを持っています:

mov rdi, rdx ; mov rbp, rsp ; jmp 0x8109b3f7

したがって、私はこのガジェットを使用できると思ったので、次のガジェットアドレスにjmpアドレス(x8109b3f7)を指定するだけです。しかし、これは機能していません。次のように、GDBを使用してjmpアドレスを設定します。

set *0x8109b3f7=0xgadget_address

それでもガジェットのアドレスではなく、JMPアドレスを指します。どうすればそれを行うことができますか?

N.B:私はx86-64アーキテクチャを使用しています。

2
perplex

Jmpを使用しても、ROPフレンドリーな制御がスタックに返されない場合があります。あなたはあなたの目標を達成するために代替のガジェットを見つける方が良いです。

また、提案されたソリューションでは、エクスプロイトが0x8109b3f7でオペコードを変更できる場合、すでにコードが実行されており、さらにROPを行う必要はありません。

1
wireghoul