题目是blackjack
,翻译过来是扑克牌的一种玩法,叫21点
。首先看了一下源码,700多行
,脑壳疼,还是先玩一局看看吧
规则和百度上的一样,就是一个21点的游戏,21点就赢了,如果没到21点的话,就比较大小。
初始现金是500
,让你输入你的赌注(bet
),输入比你现金(cash
)大的数会给错误提示。
随便玩了一局,赢了,可以看到我的现金加了300
,然后又试了一下输入一个负数
,发现没有报错,也能玩。
这局输了
,我的现金确加了100
,说明他这个程序没有检查输入,我们去源码找一些相应函数。
首先找到play()
函数,然后往下找,有个betting()
函数,这个函数是获取你输入的bet值
的,可以看到只检测了你输入的值不能大于cash
,但是没有其他的限制
,所以我们可以输入一个负数
,然后play()
判断输赢,也没有检测bet的值
,而是直接用cash
与bet
相加减,题意是将flag
给百万富翁,我们只需要输入-1000000
给bet
,然后故意输一局,就能得到flag
了