Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

利用服务端程序延迟来绕过 setu 模块节制时间 #200

Closed
Kotoki1337 opened this issue May 28, 2021 · 1 comment
Closed

利用服务端程序延迟来绕过 setu 模块节制时间 #200

Kotoki1337 opened this issue May 28, 2021 · 1 comment
Labels
enhancement New feature or request

Comments

@Kotoki1337
Copy link

Kotoki1337 commented May 28, 2021

不是很会描述,希望能传达到位

Bug 描述

在 Bot 处理第一张色图指令但并没有发出第一张色图的这段时间中,接下来的所有色图指令无视节制时间

  • 是否稳定复现,是的话说明步骤
    • 使用一台延迟较高的服务器部署(可选,低延迟也会触发此问题,区别在数量的多少)
    • 像 gif 图中的方式一样在第一张色图出来之前快速发送色图指令
    • 问题复现
  • 期望的正常行为是怎么样的
    • 防止人们使用这个 Bug 无视节制时间

截图、日志、配置

可以无视 Gugu Sillylemon 这个 bot,我没有它的控制权,所以我不清楚它具体的版本号。
动画

运行环境

  • Windows Server
  • cq-picsearcher-bot 2.29.5
  • node.js 14
  • go-cqhttp 1.0.0beta4

Others

不熟悉 js,应该是 Bot 从发出第一张图时才开始计时节制时间,导致 Bot 在找图的间隙中收到了其他的异步指令导致绕过了第一张图的节制时间。

可以尝试在收到首个色图指令的时候直到第一张图发送之前无视同一用户的其他色图指令并返回 None(或者你发的太快了之类的)?

@Tsuk1ko Tsuk1ko added the enhancement New feature or request label May 28, 2021
@Tsuk1ko
Copy link
Owner

Tsuk1ko commented May 29, 2021

原来 bot 收到搜图和 setu 请求会判断剩余配额,直到请求成功才扣除配额,因此会有这个漏洞

现在改为收到请求时直接扣除配额,如果失败则返还配额

你发得太快了 倒是没有加,这种单独的小逻辑不太想搞)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants