コンピューターのセキュリティについて学んでいて、コマンドについて質問があります。telnet コマンドを使用し、超長い URL で http get を送信することにより、バッファ オーバーフローを悪用できる脆弱な Web サーバーがあります。URL はバッファをオーバーフローします。私はそれが確実に機能することを知っています。しかし今、netcat を使用してプロセスを自動化したいと考えています。これまでのところ、私は
netcat localhost 8080 < payload1
サーバーと攻撃を同じコンピューターで実行しているため、ローカルホストに送信します。Payload1 は現在、不正な形式の HTTP Get ステートメントです。ただし、サーバーはファイルを開いて HTTP Get ステートメントを確認できないため、これを理解できません。したがって、私の質問は、HTTP Get ステートメントを実行可能にする方法、またはサーバーにファイル内の HTTP Get を認識させる方法です。
ありがとう!
編集:とりわけ、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 の問題であることがわかります。ペイロード 1 は CRLF 終了行を含む DOS 形式である必要があるという記述がありました。これを確認するために、ファイルをWindowsマシンに転送したところ、正しく表示されましたが、これを確認する別の方法があるかどうか疑問に思っていましたか?