智能合约后退作为一个捕获所有委托电话

时间:2018-06-18 03:09:47

标签: blockchain ethereum solidity smartcontracts web3js

我正在为我在大学的讲座练习智能合约中的一些漏洞。

我正在练习的合同是;

contract Company is CompanyInterface {
    address public ceo;
    ...
    function setCeo(address newCeo){
        ceo = newCeo;
    }
    ...
}

contract MainCompany is CompanyInterface {
    address public ceo;
    address public lib; // address of Company contract
    ...
    function() payable external {
        if(!lib.delegatecall(msg.data)) {
          revert();
        }
    }
    ...
}

在这里,我试着让自己成为MainCompany的首席执行官。但是,我无法弄清楚如何在这里调用setCeo。据我所知,当攻击者调用MainCompany.setCeo(攻击者)时,如果在MainCompany合同中找不到函数(setCeo),则应触发MainCompany的回退函数。但是,它不会发生。

我的方法是创建攻击者合同。在该合同中,我创建了一个执行以下操作的函数;

<addressOfMainCompany>.call.value(1)(bytes4(keccak256("setCeo(address)")), address(0x4b9...));
但是首席执行官仍然是一样的。在这里更改MainCompany首席执行官的正确方法是什么?

由于

0 个答案:

没有答案