本关是一个blackjack游戏(21点),源码在这里https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html。

看了一下游戏规则,玩家和AI一起玩牌,起初有500块,首先下注,之后每次各自会收到一张随机的牌(点数1-13),最先达到21点的人赢。每次拿到牌之后,你可以选择hit(继续拿牌)或者是stay(不拿)。如果继续拿了牌之后超过21点,那么你就输了。如果你选择stay,那么AI可能拿到超过你的点数赢你,或者超过21点输掉。

我们的目标是每次下注赢到millionare。由于发牌是随机的,不想一直靠运气玩下去的话就来审一下代码吧。

漏洞位置在下注bet这里:

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

如果下注的钱bet超过了你拥有的钱cash,那么会让你再输入一次,再输入下注的钱的时候居然没有继续判断。

那么,不管你选择stay还是选择hint,输赢对于cash的修改是一致的,以stay为例,赢了cash+bet。输了cash-bet。

void stay() //Function for when user selects 'Stay'
{dealer(); //If stay selected, dealer continues goingif(dealer_total>=17){if(player_total>=dealer_total) //If player's total is more than dealer's total, win{printf("\nUnbelievable! You Win!\n");won = won+1;cash = cash+bet;printf("\nYou have %d Wins and %d Losses. Awesome!\n", won, loss);dealer_total=0;askover();}if(player_total<dealer_total) //If player's total is less than dealer's total, loss{printf("\nDealer Has the Better Hand. You Lose.\n");loss = loss+1;cash = cash - bet;printf("\nYou have %d Wins and %d Losses. Awesome!\n", won, loss);dealer_total=0;askover();}...} // End Function

那么cash输入一个负数,继续输,cash=cash-bet。cash输入一个正数,赢一次,cash=cash+bet。

flag

Cash: $500
-------
|C    |
|  5  |
|    C|
-------Your Total is 5The Dealer Has a Total of 8Enter Bet: $501You cannot bet more money than you have.
Enter Bet: -10000000Would You Like to Hit or Stay?
Please Enter H to Hit or S to Stay.
sYou Have Chosen to Stay at 5. Wise Decision!The Dealer Has a Total of 16
The Dealer Has a Total of 24
Dealer Has the Better Hand. You Lose.You have 0 Wins and 1 Losses. Awesome!Would You Like To Play Again?
Please Enter Y for Yes or N for No
y
==================================================
YaY_I_AM_A_MILLIONARE_LOLCash: $10000500
-------
|S    |
|  1  |
|    S|
-------Your Total is 1The Dealer Has a Total of 9Enter Bet: $

嗯,找漏洞的时候需要明确我们的目标,比如cash>1000000,只看cash相关的代码就可以更快一点。

【pwnable.kr】 blackjack - 成为百万富翁(millionaire)相关推荐

  1. pwnable.kr之Toddler‘s Bottle 9~16题知识点记录

    文章目录 第九题 mistake 总结 答案: 第十题 shellshock env指令 bash指令 解题 第十一题 coin1 findall(pattern, string, flags=0) ...

  2. pwnable.kr lotto题解

    ssh lotto@pwnable.kr -p2222 (pw:guest) 题目源码: #include <stdio.h> #include <stdlib.h> #inc ...

  3. 简单易懂的 pwnable.kr 第六题[random]Writeupt

    简单易懂的 pwnable.kr 第六题[random]Writeupt 题目地址: http://pwnable.kr/play.php 题目: peak小知识 异或^ 据有如下几种性质: 2. 恒 ...

  4. 简单易懂的 pwnable.kr 第三题[bof]Writeupt

    简单易懂的 pwnable.kr 第三题[bof]Writeupt 题目地址:http://pwnable.kr/play.php 点开题目发现: 他给了提示覆盖,并且给了两个网址.分别打开,第一个给 ...

  5. 简单易懂的 pwnable.kr 第二题[collision]Writeupt

    简单易懂的 pwnable.kr 第二题[collision]Writeupt 题目地址:http://pwnable.kr/play.php 题目如下: 和第一题一样,题目给了我们一个ssh远程登录 ...

  6. 简单易懂的 pwnable.kr 第一题[fd]Writeupt

    简单易懂的 pwnable.kr 第一题[fd]Writeupt 题目地址http://pwnable.kr/play.php 题目 题目中给出了ssh远程登录的地址以及登录密码我们先连接,输入密码: ...

  7. 【pwnable.kr】passcode

    pwnable从入门到放弃,第六题. ssh passcode@pwnable.kr -p2222 (pw:guest) 完全是'&'的锅. #include <stdio.h> ...

  8. pwnable.kr passcode

    题目来自pwnable.kr 里面的思路是通过学习别人的文章获得的,作为个人的学习记录一下 题目是这样的 passcode SSH连接一下 看看有什么文件 可以看到有三个文件,其中 flag 只对创建 ...

  9. pwnable kr 之 passcode

    http://pwnable.kr/playproc.php?no=18 首先,需要对got表的一个基础认识 这里对got表和plt表进行一个简单的介绍 https://blog.csdn.net/q ...

  10. pwnable.kr - passcode

    这个题考查的是GOT表覆写 先来说说做题的思路和方法,看到源代码 void login(){int passcode1;int passcode2;printf("enter passcod ...

最新文章

  1. Linux服务器编程之:truncate()函数+案例说明
  2. X265整体流程-Create
  3. vue 父链和子组件索引_vuejs填坑-父子组件之间的访问
  4. JSP中 input type 用法
  5. 视频跟踪——CMT算法
  6. cocos2dx打飞机项目笔记二:BulletLayer类
  7. 【机器学习】一般线性回归
  8. 盘绕过苹果id方法_如何更换苹果ID?
  9. windows设置开机启动项
  10. 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
  11. 乱码385b1b926a38153d38957556c0dc55b5
  12. python pandas to_csv 最左边 多一列 索引值 问题处理
  13. python 列表嵌套 元素全部相同
  14. c语言 小学生测试题,C语言编程测试题(含答案)
  15. 基于对立非洲秃鹫优化算法求解单目标优化问题(OAVOA)含Matlab代码
  16. 知名网络漫画XKCD被黑客攻击,约56万用户数据被泄露
  17. 微软的学术可视化搜索
  18. 沉痛悼念互联网[云原生领域]技术大牛----左耳朵耗子(陈皓老师)
  19. Python操作word基础
  20. [Acwing] 健康的荷斯坦奶牛 -二进制枚举

热门文章

  1. 电脑反应慢的解决方法
  2. 中秋节2007中秋节中秋祝福
  3. 第六课 田中さんは 新聞を 読みます。
  4. DM365启动之—RBL、UBL分析
  5. jq版本搜索文本关键字高亮
  6. 如何撰写高效且实用的Prompt
  7. GIT乱码解决方案汇总及GIT用户名和邮箱修改
  8. 【单片机笔记】基于XL4015的可调电源
  9. SQL Server 索引基础知识 1 --- 记录数据的基本格式
  10. Linux系统防火墙管理以及端口开放设置