CTF-site-project/templates/sql-injection.html

31 lines
1.9 KiB
HTML
Raw Normal View History

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 %}