hackergame2020 2048

hackergame2020总结

官方wp地址

2048

简单做法

通关,合并出「大成功」,就能得到 flag。

注意:如果在合并出「大成功」的同时方块无法移动了,算输 qwq。

复杂做法

查看网页源代码,发现提示:

  <!-- 
    changelog:
    - 2020/10/31 getflxg @ static/js/html_actuator.js
  -->

进而打开 static/js/html_actuator.js 这个文件,找到和游戏胜利有关的逻辑:

var url;
  if (won) {
    url = "/getflxg?my_favorite_fruit=" + ('b'+'a'+ +'a'+'a').toLowerCase();
  } else {
    url = "/getflxg?my_favorite_fruit=";
  }

  let request = new XMLHttpRequest();
  request.open('GET', url);

如果访问 /getflxg?my_favorite_fruit= 可以得到返回信息:

还没有大成功,不能给你 flxg。

这正是游戏失败时的提示信息。

我们打开 Chrome 浏览器的开发者工具,切换到 Console 标签页,执行一下 ('b'+'a'+ +'a'+'a').toLowerCase(),得到正确的应该填入的值为 banana,访问 /getflxg?my_favorite_fruit=banana,则可以得到正确的 flag。

这里解释一下 ('b'+'a'+ +'a'+'a').toLowerCase()为何就等于banana。可以先把字符串分成四部分1.'b' 2.'a'3.+'a'4.'a'。可以看到第三段用到了一元加运算符。
知识点

一元加运算符可以把数字字符串转换为数字,如下:

var sNum = "20";
alert(typeof sNum);	//输出 "string"
var iNum = +sNum;
alert(typeof iNum);	//输出 "number"

而当转换+'a'时,由于a不是数字字符就会输出NaN—(Not a Number),于是字符串就变为baNaNa。然后全部小写,结果就是banana
一元运算符详见:https://www.w3school.com.cn/js/pro_js_operators_unary.asp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值