[+] WriteUp for 超迷你的挖矿模拟器
This commit is contained in:
@@ -136,3 +136,43 @@ Sage 看了下但是不知道怎样在程序里面控制w
|
||||
果然不应该想太多吧w ;-;
|
||||
但是至少从 0 到 114514 没有一个数字解不出来啦w
|
||||
|
||||
<br>
|
||||
|
||||
## 31. 超迷你的挖矿模拟器 ⛏️
|
||||
|
||||
1. 挖掉 Flag 位置(1,1)的方块w(5s
|
||||
2. 开始挖 Flag 位置的空气,
|
||||
这个时候服务器检测到空气所以就执行可以掉落物品的代码w
|
||||
3. 重置地图, 这个时候 Flag 的位置会还原成 Flag 方块w
|
||||
4. 服务器返回掉落的时候重新获取 Flag 位置的材质就拿到啦w
|
||||
|
||||
其实很想用之前写 Minecraft [破解种子反假矿的 Baritone Fork](https://github.com/hykilpikonna/baritone)
|
||||
的经验试试破解种子啦w
|
||||
然后一看代码发现居然是线程安全题 (╯‵□′)╯︵┻━┻
|
||||
|
||||
(之前还好不理解为什么 Minecraft 服务器到现在都没有多线程优化哇w
|
||||
(大概这就是原因吧w
|
||||
|
||||
这是这次比赛最简单的一道题啦w
|
||||
(简单到还是写了 133 行 😭
|
||||
不过主要代码就只有 12 行啦, 剩下的都是封装嗯w
|
||||
论为什么别人写 CTF 都不遵守代码和命名规范 🌚
|
||||
|
||||
```kotlin
|
||||
// Destroy block, wait for it to complete (long = 5s)
|
||||
damage(flagX, flagY)
|
||||
Thread.sleep(5500)
|
||||
|
||||
// Destroy air, have roughly 3s until it checks the flag again
|
||||
Thread {
|
||||
val result = damage(flagX, flagY)
|
||||
println(result)
|
||||
}.start()
|
||||
|
||||
Thread.sleep(500)
|
||||
reset() // Reset the flag block
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user