0

いくつかの単純なバッファ オーバーフローを試しており、EIP を制御できますが、厳密な文字セットに制限されているようです。

たとえば、次のことを行う python スクリプトがあります。

buff = "A" * 128
buff += struct.pack("<L", 0x42424242)
sys.stdout.write(buff)

これにより、EIP が 0x42424242 に正しく上書きされます。たとえば、0x42424242 の値を 0x42434445 に変更しても、引き続き機能します。

しかし、0x804843b のような実際のアドレスを入力するとすぐに、私の EIP は 0x000000 のような無効なアドレスに変更されます。

基本的に、アルファベット文字に解決されない 0x42424242 の代わりにここに入力するすべてのアドレスは、無効な EIP アドレスを取得します。

作品:

buff += struct.pack("<L", 0x42424242)
buff += struct.pack("<L", 0x45454545) 
buff += struct.pack("<L", 0x41424344)

また、上記のすべては、AAAA EEEE ABCD のように印刷するとアルファベット文字になります。

動作しません:

buff += struct.pack("<L", 0x804843b)

印刷すると、次のような文字も表示されます: ;�</p>

4

1 に答える 1