0

最初に Web サーバーに接続するテスト コードを作成しました。次に、GET を使用して、ログイン フォームを持つページを要求します。GET が機能し、200 ステータス コードが Web サーバーから返されます。ページを取得した後、POST リクエストを送信してログイン情報を送信しようとしましたが、代わりに 405 METHOD_NOT_ALLOWED ステータス コードが返されました。

GET を送信するためのコードは次のとおりです。

char data[273] = "GET /login HTTP/1.1\r\nHost: www.minecraft.net\r\nUser-Agent: Web-sniffer/1.0.37 (+http://web-sniffer.net/)\r\nAccept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7\r\nCache-Control: no-cache\r\nAccept-Language: de,en;q=0.7,en-us;q=0.3\r\nReferer: http://web-sniffer.net/\r\n\r\n";
if ((val = send(sockfd, &data,272,0)) == -1){
    perror("send");
}

POST コマンドを含むコードは次のとおりです。ユーザー名とパスワードが変更されているため、個人情報は提供されません。

char data2[405] = "POST /login HTTP/1.1\r\nHost: www.minecraft.net\r\nConnection: close\r\nUser-Agent: Web-sniffer/1.0.37 (+http://web-sniffer.net/)\r\nAccept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7\r\nCache-Control: no-cache\r\nAccept-Language: de,en;q=0.7,en-us;q=0.3\r\nReferer: http://web-sniffer.net/\r\nContent-type: application/x-www-form-urlencoded\r\nContent-length: 38\r\n\r\nusername=ausername&password=apassword";
if ((val = send(sockfd, &data2,404,0)) == -1){
    perror("send");
}

パケットを読み取り可能にするには:

GET /login HTTP/1.1[CRLF]
Host: www.minecraft.net[CRLF]
User-Agent: Web-sniffer/1.0.37 (+http://web-sniffer.net/)[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no-cache[CRLF]
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
Referer: http://web-sniffer.net/[CRLF]
[CRLF]

そして POST パケット:

POST /login HTTP/1.1[CRLF]
Host: www.minecraft.net[CRLF]
Connection: close[CRLF]
User-Agent: Web-sniffer/1.0.37 (+http://web-sniffer.net/)[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no-cache[CRLF]
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
Referer: http://web-sniffer.net/[CRLF]
Content-type: application/x-www-form-urlencoded[CRLF]
Content-length: 38[CRLF]
[CRLF]
username=ausername&password=apassword

お気づきかもしれませんが、これらのパケットを作成するために web-sniffer.net を使用したため、User-Agent は Web-sniffer であり、POST コマンドが 302 FOUND ステータス コードを返したため、Web サイトで機能しました。

まったく同じパケットが web-sniffer.net で機能しているにもかかわらず、ここでは機能しないのに、なぜこの動作がここで観察されるのか疑問に思っています。

4

0 に答える 0