2021 | 中国科学技术大学第八届信息安全大赛 | Web
卖瓜
题目¶
有一个人前来买瓜。
HQ:哥们,这瓜多少钱一斤啊?
你:两块钱一斤。
HQ:What's up!这瓜皮子是金子做的还是瓜粒子是金子做的?
你:你瞧瞧现在哪有瓜啊?这都是大棚的瓜,只有 6 斤一个和 9 斤一个的,你嫌贵我还嫌贵呢。
(HQ 心里默默一算)
HQ:给我来 20 斤的瓜。
你:行!
HQ:行?这瓜能称出 20 斤吗?
你:我开水果摊的,还不会称重?
HQ:我问你这瓜能称出 20 斤吗?
你:你是故意找茬,是不是?你要不要吧!
HQ:你这瓜要是刚好 20 斤吗我肯定要啊。那它要是没有怎么办啊?
你:要是不是 20 斤,我自己吃了它,满意了吧?
(你开始选瓜称重)
补充说明:当称的数字变为浮点数而不是整数时,HQ 不会认可最终的称重结果。
解题思路¶
- 分别有 6 斤和 9 斤的瓜,并且只能输入整数,直接称根本称不到 20 斤 🤧
- 想到会不会是整数溢出,经尝试放 9223372036854775807 个 9 斤的瓜会溢出为 -9223372036854775808
- 本题与 PHP 的特性相关(做题的时候并没看源码或 HTTP 头之类的x),当数或运算结果超出 int 范围会被解释为 float,进一步使用函数
intval()
将 float 转为 int 时,结果是未定义的 -
奇数转偶数 :) 由于
intval()
函数只作用于乘法,小心不要让加法运算结果超出 int 范围 -
还可以两步到位
参考资料¶
最后更新:
2021年10月31日 22:18:07
Contributors: