ペンギン技術 blog

CTFのWriteupなどを記載していこうと思います

ksnCTF Writeup No.8 Basic is secure?

問題として、キャプチャファイルが与えられる

Webページにてパスワード認証のついたページに昔よくあった「Basic認証」のパケット

 

まず、Wiresharkで開く

BASIC認証のため、httpで絞り込む

・一つ目のGETはサーバより401が返されており、関係ない

・二つ目のGETの後、200が返されて認証成功しているため、二つ目のGETを見る

f:id:sPENGIN:20210723121633p:plain

 

右クリック->追跡->TCPストリームから見ると以下のようになっている 

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

 

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>

 
Authorization: Basic〜
を以下サイトなどで、Base64デコードすると、フラグが得られる
補足
Basic認証では、ユーザ名とパスワードをコロンで結合する
ユーザ名「hoge」、パスワード「fuga」の場合、「hoge:fuga」という文字列を作り、
それを BASE64エンコードしてサーバへ送る
 
今回、BASE64デコードすると、↓のような文字列が出る
ユーザ名がq8、FLAGがパスワード
q8:FLAG_~
 
The flag is q8's password.
とある通り、コロンの右がフラグ
 
パケットを盗聴されたらユーザ名、パスワードがわかってしまうという問題
 
参考
HTTP クライアントを作ってみよう(5) - Basic 認証編 -
http://x68000.q-e-d.net/~68user/net/http-auth-1.html