知识点:cookie伪造
[BSidesCF 2019]Kookie
提示我们要以以admin身份登录,还告诉我们在cookie中,那答案呼之欲出。
在cookie中加入username=admin
[BSidesCF 2020]Cards
做题目之前先了解一下21点的规则:
二十一点玩法规则和概率在二十一点游戏中,拥有最高点数的玩家获胜,其点数必须等于或低于21点;超过21点的玩家称为爆牌。 2点至10点的牌以牌面的点数来相加,J、Q、K 每张为10点。 A可记为1点或为11点,若玩家会因A而爆牌则A可算为1点,若开牌就是21点,则直接获胜。
如下图k为10,A为11,相加为21,则显示Blackjack,直接获胜。
每次请求都会产生一个SecretState,不管输赢,上一个请求的SecretState依旧存在,也就是说,我们可以不停的循环,一直保存赢的SecretState就可以了。
api为一盘的开始
开du
格式:
import requests
start = "http://214c8301-03ae-4eb3-8f55-4d9873b2a4e6.node4.buuoj.cn:81/api"
deal = start + "/deal"
# 开局
state = requests.post(start).json()["SecretState"]
while True:
# 下注
try:
resp = requests.post(deal, json={"Bet": 500, "SecretState": state}).json()
except:
continue
if resp['GameState'] == 'Blackjack':
#若游戏状态显示Blackjack则保存SecretState,以便接着来
state = resp['SecretState']
print(resp['Balance'])#余额
if resp['Balance'] > 100000:#余额大于100000显示flag
print(resp)
break