web-dev-qa-db-ja.com

このプログラムはDOSモードでは実行できません

Windowsでペンテストを実行していますXPボックスで、低い特権でシェルを達成しました。そのため、特権を昇格させようとしています。ただし、実行しようとするすべての.exeは「このプログラムはDOSモードでは実行できません」と表示されます。ボックスで変更する必要がある構成はありますか、またはこのような環境で特権昇格の別の戦略はありますか?」

7

バックグラウンド

そのメッセージは、すべてのWindows(PE形式)実行可能ファイルにある基本ヘッダーからのものです。メッセージ(およびメッセージを表示するコード)は技術的に編集可能ですが、すべてのコンパイラーは、同じ文字列を表示して終了するコードを出力するだけのようです。これは16ビットの実行可能コード(DOS .COMファイルなど)で、MS-DOSまたは同様のWindows以前のシステムでプログラムを実行しようとしたときに表示されることを意図しています。 Windowsのプログラムローダーは通常、スキップします。

説明

ただし、Windowsがそのメッセージを表示するケースが1つあります。特に、メインプログラムコードが異なるCPUアーキテクチャ用である場合は、使用しているものよりも高度なバージョンのWindows用にコンパイルされたPEを実行しようとした場合OSがサポートできるよりも。 (これは、たとえば、16ビットDOSでWin32コードを実行しようとするのと同じです。)GUIからは、ポップアップエラーが表示されますが、コマンドラインでは、そのメッセージが表示されるだけです。

ここで明らかな候補は、(古くなった)Windows XPでコードを実行しようとしていることであり、「i686 -w64-mingw32-gcc」を使用していると言います。 Windows XP用の64ビットバイナリをコンパイルしている場合、それらが機能しない可能性が非常に高くなります。 XPの64ビットビルドは技術的には存在しますが(実際には、カーネルのバージョンが5.2と5.1ですが、XPとしてブランド化されています)、広く使用されることはありませんでした。 XPボックスは32ビットのみです。コマンドラインから32ビットと64ビットのクイックチェックが必要な場合は、\Windows\SysWOW64ディレクトリの存在を確認してください( 64ビットマシンで32ビットシステムバイナリを保持します。存在しない場合は、32ビットOSで実行しています。

勧告

  • A)何かに64ビットが必要で、B)ターゲットが64ビットであることがわかっている場合を除き、32ビットのペイロードのみを使用してください。
  • コードとコンパイラがXPをターゲットにしていることを確認してください(Vista以降では、それらを使用するプログラムがXPで実行されないようにするための新しいAPIが大量に追加されています)。
  • XP VM========================================.
10
CBHacking

ペイロードが正しく配信されていることを確認してください。ftp経由でaccesschk.exeを転送するときに同様の問題が発生しました。 FTPでは、ASCIIモードとバイナリモードでの転送が可能です。バイナリモードで転送すると機能します。

バイナリモードでは、FTPサーバー上にあるファイルを少しずつ転送します。ただし、ASCIIモードでは、テキストが直接ダウンロードされます。 asciiまたはbinaryと入力して、タイプを切り替えることができます。

これを行うには、ftpサービスに接続して「binary」と入力すると、「200 Type set to I」という応答が表示されます。

ファイルを再度配置し、実行可能ファイルを実行します。

8
John Rogers