✅ All information about the transaction can be edited by user.

receive() external payable {
		/// Vulnability
    require(**msg.value >= prize** || msg.sender == owner);
    king.transfer(msg.value);
    king = msg.sender;
    prize = msg.value;
  }

Deterministic is important >> User cannot have variables.

As the transaction sender, you are always susceptible to the following cases:

Normal is 21000~

address(king).call.value(1000000000000000000).gas(4000000)();

Screen Shot 2022-07-16 at 10.45.33.png

Ethernaut

Ethernaut Lvl 9 King Walkthrough: How bad contracts can abuse withdrawals