TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #466 194
Разбор задачи от Immunefi

Нашел в сети небольшую задачу от популярной компании Immunefu, которая занимается безопасностью смарт контрактов.

Предлагаю ее вашему внимаю по этой ссылке. Целю является получить желаемый NFT. Ниже будет представлен разбор решения, поэтому вы сможете сначала сами разобрать его, а потом свериться с ответом.

Переменные, маппинги, модификатор и конструктор довольно стандартные для подобных задач.

Далее идет функция list(), которая создает токен и устанавливает время ставок, и collect(), которая позволяет забрать токен победителю. Обе они защищены модификатором от reentrancy. Да и в целом, выглядят ок.

А вот bid() выглядит очень интересно. 4 проверки в начале и запись ставки для NFT, если ранее такой не существовало.

А если уже есть ставка на данный NFT?

В этом случае идет проверка на сумму ставки, если она меньше предложенной ранее, то идет откат транзакции. Если же больше, то предыдущему владельцу возвращается его Эфир, и уже после записывается новый владелец ставки.

Вот тут и кроется уязвимость! Если ставку предыдущего участника не получается вернуть, то выполнение функции дальше тормозится, и новый адрес установить невозможно. Всего-то останется дождаться конца аукциона и забрать свой приз.

Простой контракт может выглядеть так:

contract Attack {
  Auction auction;
  constructor (address _auction) {
    auction = Auction(_auction);
  }
  function attack (uint256 _id) external payable {
   
auction.bid{value:2 ether}(_id);
  }
  receive() external payable {
    revert ("...");
  }
}

Это простая DoS атака, при этом интересная задача с аукционом.

#dos #challenge
  • 👍 3
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 →