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)

위는 문제에 소스코드다.

Untitled

딱 보자하니. SQL injection 냄새가 스멀스멀 난다.

간단한 SQLI문제 같다.

Untitled

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

Untitled

야호 성공이다 !