lsdogXG/nht-ctf

GitHub: lsdogXG/nht-ctf

基于 Hardhat 分叉 Arbitrum One 并内置 GMX V1 Keeper 的独立 CTF 挑战环境,供安全研究者与参赛者与真实协议状态交互解题。

Stars: 0 | Forks: 0

# nht — GMX V1 Arbitrum Fork CTF 一个独立的 CTF 挑战,在固定区块处分叉 Arbitrum One,并在后台运行 GMX V1 keeper。玩家连接到公共 RPC 并与实时的 GMX V1 状态进行交互以解决挑战。 ## 运行内容 - **Arbitrum One 分叉**,区块为 `355878386`,通过 Hardhat 运行 - **私有 RPC**(端口 `8546`)— 包含完整的 Hardhat 方法,由 keeper 在内部使用 - **公共 RPC**(端口 `8545`)— 代理会**过滤掉** `hardhat_*`、`evm_*`、`anvil_*` 等管理方法,使玩家无法模拟账户或挖出区块 - **Keeper 守护进程**负责处理: - `OrderBook.executeIncreaseOrder` / `executeDecreaseOrder`(通过 `PositionManager`) - `PositionRouter.executeDecreasePositions`(减仓队列) 挑战入口合约位于 `contracts/exp.sol` 中。 ## 快速开始 ### 本地 ``` pnpm install cp .env.example .env # set ARB_RPC_URL to a real Arbitrum archive RPC # 终端 1 — 启动 fork npm run rpc # 终端 2 — 启动 keeper daemon npm run keeper # 终端 3(可选) — 公开 RPC 代理 npm run proxy ``` 或者,使用单行命令: ``` bash scripts/up.sh "https://your-arbitrum-rpc" ``` ### Docker(推荐用于 CTF 部署) 仅暴露公共 RPC 端口;私有 RPC 和 keeper 均在容器内部运行。 ``` docker build -t nht-ctf . docker run --rm -p 8545:8545 -e ARB_RPC_URL="https://your-arbitrum-rpc/" nht-ctf ``` 或通过 compose 运行: ``` export ARB_RPC_URL="https://your-arbitrum-rpc/" docker compose up --build ``` ## 目录结构 ``` contracts/exp.sol Challenge / exploit entry-point contract hardhat.config.ts Fork config, networks, solidity profile flag.txt Placeholder flag (replace before deploying) scripts/ up.sh One-shot launcher (rpc + proxy + keeper) run-fork-rpc.sh Start the private fork RPC public-rpc-proxy.ts JSON-RPC proxy that blocks admin methods keeper-daemon.ts GMX V1 keeper loop fund-player.ts Fund the player address with ETH/USDC check-fork-health.ts Sanity-check the fork is alive check-vault-wbtc-reserve.ts Win-condition probe docker-entrypoint.sh Container boot script lib/ gmx-v1-abis.ts ABIs used by the keeper gmx-v1-arbitrum.ts Mainnet addresses keepers/orderbook.ts OrderBook keeper keepers/position-router.ts PositionRouter keeper Dockerfile / docker-compose.yml ``` ## 注意事项 - **不要**公开暴露私有 RPC(`8546`) — 玩家应该访问的是公共代理。 - Keeper 配置(地址、间隔时间)位于 `scripts/keeper-daemon.ts` 的顶部 — 不支持 CLI 参数。 - 在让玩家进入之前为其提供资金:编辑 `scripts/fund-player.ts`,然后运行 `npm run fund`。 - 在部署之前,请将 `flag.txt` 替换为你的真实 flag。 ## 技术栈 - Hardhat 3 + viem toolbox - Solidity 0.8.28 - TypeScript / Node 22 LTS - pnpm ## 许可证 MIT
标签:Arbitrum Fork, CISA项目, DeFi, Docker, GMX V1, Hardhat, JSON-RPC, Keeper守护进程, MITM代理, RPC代理, Solidity, Web3安全, 以太坊测试网, 区块链安全, 安全防御评估, 智能合约安全, 本地节点, 网络安全竞赛, 自动化做市商, 自动化攻击, 请求拦截, 靶场环境