mintNft() and buy() are both payable, which allow the callers to send ETH to the contract.
Even though the interaction of this contract assumes both buyers and sellers to transact in USDC, the payable modifier opens up the possibility for users to set msg.value and send ETH to the contract, with no refund mechanism. Even the contract owner would not be able to withdraw trapped ETH.
Remove payable modifiers from both mintNft() and buy() methods.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.