Denial


文档摘要

Denial 题目描述 原题 in Sepolia 拒绝用户提取资金 (此时合约仍有资金,并且交易的 gas 为 1M 或更少)。 运行 根据Foundry 官方文档配置好运行环境后,于本项目下执行下列命令: 功能简述 call 如果异常会转账失败,只会返回false,不会最终停止执行, 没有gas限制 call方法会将调用结果以true和false的形式返回,即调用过程中有错误发生,也不会影响后续的代码。 所以只有让gas在外部call时全部消耗掉,无法运行后续代码。 或者进行重新攻击,转走合约中的所有本币。但是题目要求的 。就不能转完合约里全部的钱。 如果使用低级别 外部调用,请确保指定固定的 gas 津贴。例如 。

Denial

题目描述

原题 in Sepolia

拒绝用户提取资金withdraw()(此时合约仍有资金,并且交易的 gas 为 1M 或更少)。

运行

根据Foundry 官方文档配置好运行环境后,于本项目下执行下列命令:

$ cd WTF-CTF $ forge test -C src/Ethernaut/Denial -vvvvv

功能简述

call 如果异常会转账失败,只会返回false,不会最终停止执行, 没有gas限制

// The recipient can revert, the owner will still get their share partner.call{value: amountToSend}("");

call方法会将调用结果以true和false的形式返回,即调用过程中有错误发生,也不会影响后续的代码。

所以只有让gas在外部call时全部消耗掉,无法运行后续代码。

receive() external payable { // 消耗掉所有gas值 while(true){} }

或者进行重新攻击,转走合约中的所有本币。但是题目要求的whilst the contract still has funds。就不能转完合约里全部的钱。

如果使用低级别call外部调用,请确保指定固定的 gas 津贴。例如call{gas: 100000}("")


作者与出处
原作者: WTFAcademy
来源:WTFAcademy
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: WTFAcademy 转发
评论区 (0)
U