Written by saisree
Login as admin you must. This time, the client is of no use :(. What to do?
https://login_sequel.tjctf.org/
調査
- 適当に
'
をまず入れてみるが反応に変わりはない - ソースコードを見てみるとヒントが書いてある
<!-- The following code might be helpful to look at: --> <!-- def get_user(username, password): database = connect_database() cursor = database.cursor() try: cursor.execute('SELECT username, password FROM `userandpassword` WHERE username=\'%s\' AND password=\'%s\'' % (username, hashlib.md5(password.encode()))) except: return render_template("failure.html") row = cursor.fetchone() database.commit() database.close() if row is None: return None return (row[0],row[1]) -->
バックエンドはpythonのようだ。
これを見ると反応は変わっていないが、SQLiできそうな感じがする。
SQL Injection
' OR 1=1 --
これを投げてみると…
detectされてしまった。何か文字を見ているんだろう。
自分が見つけた使えない文字は-
or
password
from
。
-
がNG文字なのでPostgreSQLなんだろう。
他にコメント手段がないかを探すと、/* comment */
も使えるらしい。
もしかしたら、コメント閉じが無くてもいけるのでは?と思ってやったらいける。
ユーザー名に' union select 'admin', 'pass' /*
でパスワードを適当にしたら、フラグが出てくる。