Солидность Безопасность

Я новичок в безопасности ICO и смарт-контрактов. Пытаемся найти баги в проверенных контрактах. Кажется, я обнаружил некоторые проблемы в адресе 0x42dB5Bfe8828f12F164586AF8A992B3a7B038164, но я не знаю, как их вывести. Нужно ли мне создавать транзакцию самостоятельно?

Всем привет. Не слишком понятно, о чем вы спрашиваете. Вы спрашиваете нас, как вывести средства, удерживаемые контрактом...?
Как вы наткнулись на этот и подобные контракты?

Ответы (1)

Ха-ха - очень подлый.

***Предупреждение***

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

Далее следует объяснение.

Похоже, в withdrawal()функции есть довольно заманчивая уязвимость: когда вы отправляете функции больше, чем LimitWei, она отправит вам весь баланс контракта — сумму, которую вы отправили, плюс 0,36 Eth, которые уже есть. Мгновенная прибыль!

Однако есть эта невинно выглядящая, но тем не менее свойственная delegatecallфункция logEvent()в другом договоре. Короче говоря, это не регистрирует событие. На самом деле он незаметно изменяет значение adrпеременной хранилища, чтобы оно больше не указывало на msg.sender. Таким образом, баланс контракта не будет возвращен вам по adr.send(this.balance)звонку, он будет отправлен куда-то еще, так adrкак больше не равен msg.sender.

Это немного запутано, но похоже, что делегированный вызов email.logEvent()функции контракта приводит adrк установке на собственный адрес контракта: т.е. он отправляет весь Эфир (включая тот, который вы отправили) себе. Только владелец контракта (0x46Feeb381e90f7e30635B4F33CE3F6fA8EA6ed9b) может вывести Eth.

Первая строка в вашем ответе подразумевает, что чувак, задавший вопрос, пытается провернуть аферу. Вы действительно намеревались это подразумевать?
Ах я вижу. Очень хорошо :-) +1
Я не мошенник, я только изучаю контракты. Большое спасибо за осведомленность!
@Mike N. В таком случае добро пожаловать и не стесняйтесь отмечать ответ принятым. Надеюсь, я достаточно объяснил, почему не стоит иметь ничего общего с этим контрактом, если он вам не принадлежит.
Конечно! Как я могу это принять? Кстати, просмотрел другие контракты и нашел несколько похожих! 0x62d5c4a317b93085697cfb1c775be4398df0678c и 0x477D1EE2F953A2F85dbEcBcB371c2613809eA452. Вероятно, есть намного больше. Можем ли мы их как-то заблокировать?
Что делать, если кто-то ответит на мой вопрос? tl; dr — нажмите на галочку рядом с ответом, который вы хотите принять.
— Мы можем их как-то заблокировать? - это блокчейн. Несмотря на название, ничто не может быть заблокировано. Это особенность. Если люди теряют Eth, пытаясь взломать хакеров, я не очень сочувствую.
Извините за дополнительные вопросы. Я развернул код контракта локально. Но поскольку у меня нет исходного кода другого контракта, который называется. Как я могу развернуть этот контракт в тестовой сети? И эти два других контракта кажутся немного другими. Я бы тоже хотел их протестировать... Вы отлаживаете транзакции в Remix?
Tx, создавший emailконтракт, находится здесь . Просто скопируйте и вставьте байт-код в любой инструмент развертывания, который вы используете. Затем вам нужно изменить адрес в другом контракте, чтобы он указывал на новый адрес email. Я использую написанный мной декомпилятор и много рисую на клочках бумаги для анализа. Ремикс хорош, если есть существующий Tx для трассировки, но в этом случае его не было.
Привет. Кажется, кто-то отозвал оба вышеуказанных контракта. Кто-нибудь может объяснить, как это было сделано?
Похоже, кто-то просто шутит )) Еще один ) 0x47000dE9Ac92E29d4Fee617732fFEedc306Bd10E ... Так как проверить возможность забрать эфир? Как вызвать эту функцию из другого контракта?
@Mike N. Автор сам расторг контракт. Ваши последующие действия лучше задать как свежие вопросы, чем похоронить здесь.
Хорошо! Обсуждение перенесено сюда - ethereum.stackexchange.com/questions/34708/…