09.challenge
2023-07-28 20:09:40
# 16.CBSC 2022
09.challenge
分析
1.全局观
四个合约
- deploy
- 部署attack2合约
- attack2
- 实现了IERC721Receiver,说明可以接收ERC721代币
- 有选择性的调用EverytingIsArt合约的
hopeIsInSight()
- attack
- 实现了IERC721Receiver,说明可以接收ERC721代币
- 有选择性的调用EverytingIsArt合约的
hopeIsInSight()
和theHope()
- EverytingIsArt
- 是一个ERC721代币
- 三个方法可以铸币
- 初始化题目
2.任务
刚好获得288个NFT
1 | function isCompleted() public view returns (bool) { |
3.分析
有三个方法都可以获得代币,先来看becomeAnArtist()
:
1 | function becomeAnArtist(uint256 _count) public returns (bool) { |
额这个直接调用就完成题目了,因为题目是_safeMint()
因此需要实现onERC721Received()
,这个随便骗骗它就好
解题
1 | // SPDX-License-Identifier: UNLICENSED |