Normal behaviour: lastClaimTime and dailyClaimCount must be updated before any external interactions to prevent double-claiming or bypassing limits.
Problem: lastClaimTime[faucetClaimer] = block.timestamp; and dailyClaimCount++ are assigned after the ETH transfer and after checks that could be re-entered. Combined with the reentrancy issue above, this allows repeated claims and bypasses per-day counters.
Likelihood:
Reentrancy is feasible, so the missing earlier state update will be exploited to call again and again.
Impact:
Multiple claims within cooldown and daily limits, draining tokens/ETH.
Move lastClaimTime and dailyClaimCount++ to before any external calls (and before the token transfer).
Combine this with nonReentrant and the ETH-drip ordering fix described earlier.
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.