Skip to content

Instantly share code, notes, and snippets.

@m9800
m9800 / searchSanctuary.py
Created December 5, 2023 21:40
Santuary search
import os
import re
import csv
# Sanctuary link : https://github.com/tintinweb/smart-contract-sanctuary-ethereum/tree/015d0105102504dc8733a18c3543f87f1829a5e8
# Patterns
erc2771_pattern = re.compile(r".*import.*ERC2771.*")
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

import "@openzeppelin/contracts/interfaces/IERC20.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

import  "./crossChainWarriors.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";

contract Attacker is IERC721Receiver {
    // Used to avoid an infinite loop
    bool public _hasReentered;
 function crossChainTransfer(
       uint256 crossChainId,
       address to,
       uint256 tokenId
   ) external {
       if (!_isValidChainId(crossChainId)) revert InvalidDestinationChainId();
       if (!_isApprovedOrOwner(_msgSender(), tokenId)) revert InvalidTransferCaller();
        
 _burnWarrior(tokenId);
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract simpleReceiver{

function onERC721Received(
        address,
        address,
 uint256,
@m9800
m9800 / _check.md
Created October 12, 2022 16:26
re-entrancy project
function _checkOnERC721Received(
       address from,
       address to,
       uint256 tokenId,
       bytes memory data
   ) private returns (bool) {
       if (to.isContract()) {
           try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
 return retval == IERC721Receiver.onERC721Received.selector;
@m9800
m9800 / _safeMint.md
Created October 12, 2022 16:15
re-entrancy project
function _safeMint(
       address to,
       uint256 tokenId,
       bytes memory data
   ) internal virtual {
       _mint(to, tokenId);
       require(
           _checkOnERC721Received(address(0), to, tokenId, data),
 "ERC721: transfer to non ERC721Receiver implementer"
@m9800
m9800 / mint.md
Last active October 11, 2022 22:57
function mint(address to) public returns (uint256) {
       uint256 newWarriorId = tokenIds.current();
       _safeMint(to, newWarriorId); 
 
       tokenIds.increment();
 
       return newWarriorId;
   }