Комментарий к задаче 38 от Quill CTF
Спасибо @SovaSlava за бдительность в решении задач на канале! В задаче 38, та, в которой я решил, что уязвимость в флеш займе, однако все оказалось куда сложнее.
Я сначала решил, что это просто выжимка из задачи, но оказалось, что это полноценный контракт для практики взлома, где по условию на контракте были 10 Эфиров, а у вас 1, и нужно было забрать все себе. Вот ссылка на задачу.
Даже не знаю, нужно ли расписывать все решение по шагам. Оставлю пока на самостоятельное изучение. Мало ли, кто-то проходит данный задачник сам и не хочет получить готовое решение.
Для остальных подсказка под спойлером.
Уязвимость здесь скрывается не в функции execute, как можно подумать при первом взгляде, а в withdrawAll. Грубо говоря, нам сначала нужно написать контракт атаки, с функциями receive() и отправки эфира обратно владельцу. Далее, делая депозит в 1 эфир и "жонглируя апрувами и перекидыванием баланса эфира" с нашего адреса на контракт атаки и обратно, получить весь баланс weth после нескольких итераций. Звучит немного запутано, но понять вы сможете только после хорошего вникания в задачу.
#ctf #quill #task
Post #713
643
- ❤ 5