ksnctfを使ってHTTP通信について学ぶ③(python・ksnctf-8)
HTTP通信をpythonで行う方法を学び、それを使って次回ksnctfの問9を解く。
ksnctf - 9 Digest is secure!
①HTTPリクエストメッセージをPythonで作る
・下記はksnctfの問8のHTTPリクエストメッセージ
GET /~q8/ HTTP/1.1 Host: ctfq.sweetduet.info:10080 Connection: keep-alive Authorization: Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch Accept-Language: ja,en-US;q=0.8,en;q=0.6 Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.3
・Requestsライブラリを使って、Pythonで同じメッセージを作ってみる
import requests url="http://ctfq.sweetduet.info:10080/~q8/" headers={ 'Host': 'ctfq.sweetduet.info:10080', 'Connection':'keep-alive', 'Authorization': 'Basic cTg6RkxBR181dXg3eksyTktTSDhmU0dB', 'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'ja,en-US;q=0.8,en;q=0.6', 'Accept-Charset': 'Shift_JIS,utf-8;q=0.7,*;q=0.3', } r=requests.get(url, headers=headers)
②HTTPレスポンスメッセージをPythonで表示してみる
・下記はksnctfの問8のHTTPレスポンスメッセージ
HTTP/1.1 200 OK Date: Sat, 26 May 2012 20:54:05 GMT Server: Apache/2.2.15 (CentOS) Last-Modified: Sat, 26 May 2012 12:24:46 GMT ETag: "422da-b8-4c0ef920b3f8e" Accept-Ranges: bytes Content-Length: 184 Connection: close Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Q8</title> </head> <body> <p>Congratulations!</p> <p>The flag is q8's password.</p> </body> </html>
・pythonでメッセージを表示させてみる
(ソースコード)
print(r.status_code) print(r.headers) print(r.text)
(実行結果)
> python .\sample.py 200 {'Date': 'Tue, 21 Jan 2020 08:38:22 GMT', 'Server': 'Apache/2.2.15 (CentOS)', 'Last-Modified': 'Sat, 26 May 2012 12:24:46 GMT', 'ETag': '"422da-b8-4c0ef920b3f8e"', 'Accept-Ranges': 'bytes', 'Content-Length': '184', 'Connection': 'close', 'Content-Type': 'text/html; charset=UTF-8'} <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Q8</title> </head> <body> <p>Congratulations!</p> <p>The flag is q8's password.</p> </body> </html>
下記のドキュメントを参考にした。
Requests: 人間のためのHTTP — requests-docs-ja 1.0.4 documentation
(間違い等あればコメントよろしくお願いいたします。)