• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья CTF разбор по смарт контрактам. (1)

frog2

ripper
КИДАЛА
Регистрация
12.11.2020
Сообщения
105
Реакции
68
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет. Я хочу запустить серию статей по разбору CTF заданий, которые связаны со смарт-контрактами. Надеюсь кого нибудь заинтересует данная тематика, статья написано больше для новичков, но предполагаю, что вы должны быть знакомы с solidity и теории кодирования на базовом уровне. Решать задачи я буду на такой платформе как ethernaut. Интересно, что сам CTF построен на отдельных контрактах.


0 уровень знакомит нас как взаимодействовать с контрактами через ABI в консоли браузера, как пополнить свой баланс в тестовой среде, как вызывать различные методы и т.д.
1.png



Подключим MetaMask к Rinkeby test network.
Узнаем какие нам доступны методы.

2.png



Сверим наш адрес кошелька в консоли.
3.png



Узнаем наш баланс.
4.png



Как я ранее писал, CTF построен на контрактах и гланый контракт это ethernaut.sol. Ethernaut по сути выдает нам экземпляры уязвимых контрактов.
5.png



В главном контракте мы можем вызывать доступные нам методы. Например узнать адрес владельца контракта.
6.png



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

7.png



Нам дают подсказку, что в методе info1() есть что-то интересное.
8.png



Окей, нам предлагают вызвать метод info2() с аргументом "hello".
9.png



Нас опять перекидывают только на свойство infoNum, давайте посмотрим более детально список всех методов, какой они имеют тип, изучим модификаторы доступа в них.
10.png



Подсказка нам говорит, что нужно присмотреться к методу authenticate() по названию можно судить, что это аутентификация, а где есть аутентификация там нужно предъявить пароль. Посмотрим на список публичных методов и найдем с именем "password", он доступен и можем посмотреть данные метода. Находим пароль.
11.png



Хочу обратить внимание, подсказка так же была в методе method7123949().
12.png



Чтобы наконец решить данный уровень, мы авторизуемся с паролем, который мы нашли.
13.png



Таким образом мы прошли 0 уровень.
14.png
 

Вложения

  • 11.png
    11.png
    10.1 КБ · Просмотры: 10


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх