2011-11-14 13 views
0

私はコンピュータのセキュリティについて学び、コマンドについて質問します。 telnetコマンドを使ってバッファオーバーフローを悪用し、次にスーパーロングURLでhttpを送信することで脆弱なWebサーバーを持っています。 URLがバッファをオーバーフローします。私は確かにその作品を知っています。しかし今、私はプロセスを自動化するためにnetcatを使いたいと思っています。これまでのところ私は持っていますHTTPリクエストをファイルに送信するにはどうすればよいですか?

netcat localhost 8080 < payload1 

私は同じコンピュータ上でサーバと攻撃を実行しているため、ローカルホストに送信します。 Payload1は現在、不正な形式のHTTP Getステートメントです。しかし、HTTP Getステートメントを見るためにファイルを開くことができないため、サーバーはこれを理解できません。したがって、私の質問は:どのように私はHTTP Getステートメントを実行可能にすることができますか、またはHTTP取得をファイル内で認識するようにサーバーを取得できますか?

ありがとうございます!

編集: uriを保持するreq、とりわけ0です。少なくとも、GDBで確認しています。これは私に問題を与えているコードの行です:

if (req->uri == NULL || req->method == NULL || 
     req->headers == NULL || req->version == NULL) { 
      return 0; 
    } 

GDBは、ここではif文でそのセグメンテーションフォールトを言います。

私は、サーバーのコードの残りの部分が存在しないため、あまり意味がないことは知っています。しかし、netcatを文が送信ファイルには、次のとおりです。

get /aaaaaaaaaaaaAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa http/1.1 

私はそれを送信するためにTelnetを使用した場合、サーバがクラッシュしないので、私はnetcatをしてその問題を知っています。 payload1はCRLFの終了行を持つDOS形式でなければならないという声明がありました。これをチェックするために、ファイルをWindowsマシンに転送しましたが、これは正しく表示されましたが、これを確認する別の方法があるかどうか疑問に思っていましたか?

答えて

0

サーバーがファイルを読み取れないと思われるどのようなエラーが表示されますか。あなたが使ったコマンドラインでは、 "サーバ"はファイルを読み込まないので、OSシェルはファイルを開き、それをnetcatプロセスの標準入力として使います。

だから私はあなたを尋ねたい:payload1のパスを確認してください

  1. 。あなたはこれらの作品のどれもが、いくつかのエラーメッセージを入れていない場合は8080
  2. /問題の症状は、あなたが見ているあなたのサーバーは、TCPポートでリッスンしているnc localhost 8080 < /path/to/payload1
  3. チェックのようなものを使用する必要があります

アップデート(質問編集に基づく):

クライアントはここです。あなたの編集に基づいて、サーバがクラッシュしているようです。したがって、リクエストはサーバーに送信されます。その可能性があるのは、オリジナルのバッファオーバーフローに加えて、サーバーソフトウェアの別のバグを発見したばかりです。あなたがtelnetを使ってみると、あなたはindenticalなURIを送りましたか?

+0

ありがとう、上記の編集を参照 – tpar44

+0

あなたの編集内容に基づいて回答を更新してください。 – jman

+0

はい、このコマンドは、telnetを使って使ったのとまったく同じgetコマンドです。それがそれをとても奇妙なものにしています。 – tpar44

関連する問題