Payback
Description
Solution
Code Review
@app.route('/pay', methods=['GET', 'POST'])
def pay():
if 'logged_in' not in session:
return redirect(url_for('login', next=request.url))
if request.method == "GET":
return render_template('amount.html')
amount = int(request.form.get('amount', 0))
user = User.query.filter_by(name=session['name']).first()
if amount > user.balance:
return "Insufficient balance", 400
if amount < 0:
return "Invalid amount", 400
cb = request.args['callback']
u = request.args['user']
nonce = request.args['nonce']
m = f"user{u}amount{amount}nonce{nonce}".encode()
sig = SIG_KEY.sign(m, encoding='hex')
user.balance -= amount
db.session.commit()
return redirect(f"{cb}/callback?user={u}&amount={amount}&nonce={nonce}&sig={sig.decode()}", code=302)Parameter Pollution

Last updated