1. Fallback
挑战描述
目标是通过回退函数机制成为合约所有者并提取资金。合约包含四个关键函数:
- 构造函数
Fallback()
初始化所有者贡献值 contribute()
允许用户贡献少量ETH(<0.001 ETH)- 回退函数在满足条件时(有贡献记录且附带ETH)将调用者设为所有者
技术要点
通过浏览器控制台执行:
contract.contribute({value:1})
建立贡献记录- 通过MetaMask直接向合约地址转账触发回退函数
contract.withdraw()
提取资金
2. Fallout
漏洞本质
构造函数Fal1out()
存在拼写错误(应为Fallout
),导致其变为普通公开函数。任何用户调用后即可成为所有者:
|
|
3. Token
整数下溢漏洞
转账函数存在无符号整数下溢:
|
|
攻击方案:contract.transfer(0x0, 21)
使余额变为2^256-1
4. Delegation
委托调用风险
通过delegatecall
执行Delegate
合约的pwn()
函数:
|
|
攻击载荷:发送包含pwn()
函数签名0xdd365b8b
的交易
5. Force
强制转账技术
通过自毁合约强制转账:
|
|
关键点:自毁时ETH强制转入目标地址,无视常规转账限制
6. Re-entrancy
重入攻击模式
漏洞代码模式:
|
|
攻击合约需实现恶意回退函数,在ETH回调时递归调用withdraw
工具应用
- Manticore:符号执行检测整数溢出
- Slither:静态分析发现构造函数误用
- Ethersplay:可视化EVM调度器结构