diff --git a/templates/_task.html b/templates/_task.html deleted file mode 100644 index 1b4598a..0000000 --- a/templates/_task.html +++ /dev/null @@ -1,17 +0,0 @@ - - - -{% block head %} - {%- include '_head.html' %} -{%- endblock %} - -
-{% include '_header.html' -%} - - {% block content -%}{% endblock -%} - - -< Задания категории Форензика >
diff --git a/templates/index.html b/templates/index.html index c9691a2..7bcbe33 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,8 +1,8 @@ -{% include '_head.html' %} +{% include 'utils/_head.html' %} - {% include '_header.html' %} + {% include 'utils/_header.html' %}SQL-инъекция - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.
+
Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую (пример кода с сервера ниже)
+#Как же это работает на сервере?(не стоит так делать, иначе ваш код будет иметь ту же уязвимость)
+login = request.form['login'] # Получаем данные из окна с логином, которые пользователь ввёл в форму
+password = request.form['pass'] # Так же получаем данные из окна с паролем
+cursor = get_db().cursor() # Получение доступа к базе данных
+cursor.execute(f'SELECT * FROM Users WHERE login == "{login}" AND password == "{password}"') # Вставляем в запрос данные от пользователя
+ Так в место того, чтобы вводить свои данные, можно ввести определённые команды (как правило - вредоносные) + Вводим в соответствующее поле предполагаемый логин админа - admin, а часть кода с проверкой пароля, которая идёт после проверки логина, просто закомментируем знаками ";-- или "#. + Если мы введём admin";-- в поле логин, то наш запрос на сервер отправится вот так:
+cursor.execute(f'SELECT * FROM Users WHERE login == "admin";--" AND password == "{password}"')
+ Соответственно вся часть после знака комментария просто не учитывается. Вы успешно вошли под логином admin.
+ скрыть +Это ресурс для обучения, где можно попробовать свои силы в самых @@ -56,6 +70,6 @@
< Задания категории OSINT >
diff --git a/templates/osint-questions.html b/templates/osint-questions.html index 79fe760..df8ea9f 100644 --- a/templates/osint-questions.html +++ b/templates/osint-questions.html @@ -1,5 +1,5 @@ -{% extends '_task.html' %} -{% include '_osintsidenav.html' %} +{% extends 'utils/_task.html' %} +{% include 'utils/_osintsidenav.html' %} {% block content %} diff --git a/templates/sql-injection.html b/templates/sql-injection.html index 0e11af5..1506e0b 100644 --- a/templates/sql-injection.html +++ b/templates/sql-injection.html @@ -1,9 +1,9 @@ -{% extends '_task.html' %} -{% include '_websidenav.html' %} +{% extends 'utils/_task.html' %} +{% include 'utils/_websidenav.html' %} {% block content %}SQL-инъекция - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.
+
SQL-инъекция - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.
Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую (пример кода с сервера ниже)
#Как же это работает на сервере?(не стоит так делать, иначе ваш код будет иметь ту же уязвимость)
login = request.form['login'] # Получаем данные из окна с логином, которые пользователь ввёл в форму
@@ -17,7 +17,8 @@ cursor.execute(f'SELECT * FROM Users WHERE login == "{login}" AND password == "{
Соответственно вся часть после знака комментария просто не учитывается. Вы успешно вошли под логином admin.
скрыть
{{ error }}
< Задания категории Web >