from flask import Flask, request, render_template
from flask_mysqldb import MySQL
import os
app = Flask(__name__)
app.config['MYSQL_HOST'] = '127.0.0.1'
app.config['MYSQL_USER'] = 'dbuser'
app.config['MYSQL_PASSWORD'] = '**SECRET**'
app.config['MYSQL_DB'] = 'users'
mysql = MySQL(app)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'GET':
return render_template('index.html')
else:
uid = request.form['uid']
upw = request.form['upw']
if uid and upw:
cur = mysql.connection.cursor()
cur.execute(f"SELECT * FROM user WHERE uid='{uid}' and upw='{upw}';")
res = cur.fetchone()
if res:
return "L7{**SECRET**}"
else:
return 'fail.'
else:
return 'fail.'
app.run(host='0.0.0.0', port=10003)
위는 문제에 소스코드다.

딱 보자하니. SQL injection 냄새가 스멀스멀 난다.
간단한 SQLI문제 같다.

단순히 값이 참만 되면 플래그를 출력하기에 1 or 1 = 1 구문을 활용하면 될거 같다.

야호 성공이다 !