2025-01-27 22:49:34 +03:00
{% extends '_task.html' %}
2025-01-25 22:18:21 +03:00
2025-01-27 22:49:34 +03:00
{% block content%}
2025-01-25 22:18:21 +03:00
< div class = "container" >
2025-01-30 00:22:19 +03:00
< div id = "popup" class = "sql-guide divv" >
< p class = "simpletext" > Это так называемая SQL-инъекция - уязвимость в системах, где отправляются SQL запросы, например регистрационные формы. < br / >
< p class = "simpletext" > Как именно это работает? В с е дело в том, что запрос отправляется без проверки на то, что пользователь туда ввёл. С использованием синтаксиса запроса можно указать с е б е логин 'admin', а часть с проверкой пароля просто-напросто закомментировать.< / p >
< pre > < code class = "python" > login = request.form['login']
password = request.form['pass']
cursor = get_db().cursor()
cursor.execute(f'SELECT * FROM Users WHERE login == "{login}" AND password == "{password}"')< / code > < / pre > < / p > < br / >
< p class = "simpletext" > Примерно так выглядит сообтвествующий код, который позволяет использовать уязвимость< / p >
2025-01-25 22:18:21 +03:00
< / div >
2025-01-30 00:22:19 +03:00
< div class = "divv" id = "sqlInpt" >
2025-01-26 22:34:47 +03:00
< form action = "sql-injection" method = "post" class = "simpletext" >
2025-01-27 00:20:55 +03:00
< div class = "small-container" > < p > Login: < p class = "hidden" > ...< / p > < / p > < input type = "text" name = "login" class = "inpt" / > < / div >
2025-01-25 22:18:21 +03:00
< div class = "small-container" > < p > Password:< / p > < input type = "password" name = "pass" class = "inpt" / > < / div >
< input type = "submit" value = "Submit" class = "btn1" / >
< / form >
< / div >
< / div >
2025-01-27 22:49:34 +03:00
{% if error %}
< div id = "error" > < p > {{ error }}< / p > < / div >
{% elif success %}
< div id = "success" > < p > {{ success }}< / p > < / div >
{% endif %}
2025-01-24 23:58:28 +03:00
2025-01-27 22:49:34 +03:00
{% endblock %}