web-dev-qa-db-ja.com

ラボで「ブラインド」バッファオーバーフローを悪用する

CTF /エクスプロイテーションラボでは、2つの別個のマシンを認識しています。

  • 開発マシン:Windows 7 x64、入手可能な限り空白(KBパッチなし)
  • サービスマシン:不明

開発者:

特定のポートに基本的なBoFの脆弱性があるCのソースコードファイルと、そのソースコードのコンパイル済みアプリケーションがあります。バイナリを実行すると、「api-ms-win-crt-runtime-l1-1-0.dllがありません」というエラーが表示され、インストール、追加、使用できませんDLLでない限り開発者のマシンをSP1にアップグレードします。したがって、「api-ms-win-crt-runtime-l1-1-0.dll」を使用できる空のWindows 7 x64でローカルVMを作成しました。私のVMでは、完全に機能するエクスプロイトがあります。

サービスマシン:

ファジングトレイルとエラーの手順の実行中に、BoFの脆弱性により、同じ特定のポートでターゲットアプリケーションをクラッシュさせることができることがわかりました。残念ながら、bind_tcp/reverse_tcpシェル、pingバック、dnsリクエスト、何も実行できません...

EIPがサービスマシン上のJMP ESP(たとえば)の正しいアドレスを指していることを確認するにはどうすればよいですか? 「api-ms-win-crt-runtime-l1-1-0.dll」のアドレスを使用できますか?

4
Lucian Nitescu

エクスプロイトを作成するときは、最初にアプリケーションライブラリで常に命令(例:JMP ESP)を検索する必要があります。これにより、OS/SP間の信頼性が向上します。

ワーキングエクスプロイトにどの命令を使用しましたか(これに関する詳細情報は非常に役立ちます)?問題の可能性が高いのがOSライブラリであった場合、ターゲットが別のOSまたはSPレベルであると想定します。

X86マシンでは、Immunityおよびmona.pyを使用して、エクスプロイトに適切な手順を見つけます。 x64dbgへのモナのポート も見つけることができます。

これがCTFの演習であることを考えると、入手可能な情報で可能になるはずであり、アプリケーションのライブラリーが答えであると思います。別のアイデアは-ターゲットマシンでどの列挙アクティビティを試しましたか?それについてより多くの情報を漏らしている情報を取り戻すことができますか?

1
deletehead