Comments
6
после второго из-за переполнения целочисленной переменной контракт становится счастливым обладателем (2256-1) токенов.
Integer underflow. В смарт-контрактах. Я ничего не упускаю?
Да, так и есть. Но уязвимость заключается скорее в том, что контракт не предусматривает рекурсивный вызов SellTokens(). Злоумышленник может провести на ее основе разные атаки. Не только переполнить uint, но и, например, вывести одни и те же токены несколько раз.
А как вам неинициализированная локальная ссылка на массив, которая указывает в начало глобальной памяти? Вот где реально жесть.
При чем для любого кто пишет на С/С++ это выглядит как локальный массив на стеке. Я даже подумать не мог что это просто указатель да ещё и на валидный участок памяти.
«Оба хуже»©
Only those users with full accounts are able to leave comments. Log in, please.
Криптовалюта Ethereum: пишем эксплойт под уязвимый умный контракт и получаем токены