Ethernaut靶场
level4
关键知识点:tx.origin
和msg.sender
的区别
tx.origin vs msg.sender[¶](https://ctf-wiki.org/blockchain/ethereum/basics/#txorigin-vs-msgsender)
- 这里区分一下 tx.origin 和 msg.sender ,msg.sender 是函数的直接调用方,在用户手动调用该函数时是发起交易的账户地址,但也可以是调用该函数的一个智能合约的地址。而 tx.origin 则必然是这个交易的原始发起方,无论中间有多少次合约内 / 跨合约函数调用,而且一定是账户地址而不是合约地址。
- 给定这样一个场景如:用户通过合约 A 调合约 B,此时:
- 对于合约 A : tx.origin 和 msg.sender 都是用户
- 对于合约 B : tx.origin 是用户,msg.sender 是合约 A
——CTF-WIKI
POC
1 | contract attack{ |
level5
**关键知识点:**溢出攻击
POC
版本0.6,存在下界溢出且无溢出保护,直接转21使得banlances=-1即可
level6
**关键知识点:**委托调用
委托调用就相当于把另一个函数的的代码照抄照搬过来然后调用
POC
msg.data填为pwn函数地址即可
level7
**关键知识点:**自毁合约——selfdestruct
POC
1 | contract attack{ |
level8
关键知识点:区块链特性——记录公开透明
POC
翻转账记录,因为在区块链浏览器上所有数据都是公开透明的
重入攻击
我对重入攻击的理解是回调函数中断条件一直不被满足而导致的函数重复不断的调用
CTF-WIKI上的解释: