游戏源码
http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html
打开之后是一个游戏
你有500本金,赢到一百万才有flag
每次下注不能超过本金,运气好都要很久,更何况还会输,那么我们看看这个游戏的源码,但是
于是我窃了一下其他的博客的源码(读书人能叫偷吗)
int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); scanf("%d", &bet); if (bet > cash) //If player tries to bet more money than player has { printf("\nYou cannot bet more money than you have."); printf("\nEnter Bet: "); scanf("%d", &bet); return bet; } else return bet; } // End Function
可以看到这里,第一次判断如果下注超过本金,则告诉你没有那么多钱,并且让你在输入一次,重点是第二次输入的本金没有进行二次判断是否大于本金,于是我们就可以利用这里逻辑漏洞:第一次故意故意输入大于500,第二次输入一百万,一次一百万获取flag
第一次输入501,第二次1000000
与电脑斗智斗勇,然后暴富
或者可以利用负数
YaY_I_AM_A_MILLIONARE_LOL