The buyPresent() function has no check to prevent minting multiple NFTs to the same address, breaking the protocol's documented rule that each user should receive only one NFT. This allows users to bypass the duplicate prevention that exists in collectPresent().
Protocol implements "1 NFT per user" rule in collectPresent() function
buyPresent() has no such check, allowing unlimited NFTs
Inconsistency where legitimate users can only get 1 NFT, but anyone with tokens can buy unlimited
Likelihood:
Anyone with tokens can exploit this
No conditions needed beyond having tokens
Can be repeated unlimited times
Impact:
Protocol rule "1 NFT per user" is bypassable
Unlimited NFTs can be minted
Unfair advantage for users with tokens
Combined with Finding #2 - attacker can force unlimited NFTs onto victims while draining their tokens
This test demonstrates that a user can receive multiple NFTs through buyPresent(), breaking the "1 NFT per user" rule.
Add duplicate check to buyPresent() to enforce the "1 NFT per user" rule consistently.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.