in RamNFT contract, mintRamNFT function allows the Dussehra contract to mint Ram NFTs. So anyone want to enter in the event like Ram must pay entranceFee and receive the ramNFT via Dussehra::enterPeopleWhoLikeRam function. However, mintRamNFT function is lacking of access control, it doesn't have any modifier or require statement to ensure msg.sender is the Dussehra contract.
It allow everyone call and receive a ramNFT. They have chance to win and withdraw money without paying entranceFee.
Manual review
Foundry
player1 call enterPeopleWhoLikeRam and have to pay entranceFee.
player2 call mintRamNFT to receive ramNFT just pay the gas.
Time up, the organiser call ChoosingRam.selectRamIfNotSelected function and the winner is player2.
player2 kill Ranvana and withdraw money.
Place this test in Dussehra.t.sol
Add an address of Dussehra contract, setdussehraContract function and onlydussehraContract modifier to check whenever the mintRamNFT function is called
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.