「ROP stagerによるシェルコード実行をやってみる」では、mmapにより動的に実行可能なメモリを確保しシェルコード実行を行った。 ROP stagerには、ほかにもmprotectなどを使いすでに存在するメモリ領域を実行可能に変更するアプローチもある。 さらに、脆弱性のあるプログラムがread/writeなどのIO関数を利用している場合、そのPLTを利用することでASLR+DEPを回避することができる。 ここでは、IO関数を利用したROP stagerを使い、ASLRおよびDEPが有効な条件下でのシェル起動およびシェルコード実行をやってみる。 また、使われているlibcの詳細が不明な状況において、libcバイナリを直接読み出し詳細を調べる方法についても説明する。 環境 Ubuntu 12.04 LTS 32bit版 $ uname -a Linux vm-ubuntu32 3.11.