Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3622960
А
Аноним
18 июня 2026 11:25 · публичный вопрос
А
Аноним

555wqtjHNjN')) OR 644=(SELECT 644 FROM PG_SLEEP(0))--

Ответ нейросети
18 июня 2026 11:25

What you posted looks like an SQL injection payload, specifically a time-based test using PostgreSQL's pg_sleep function. It’s an example attackers might use to check if user input is being directly concatenated into a SQL query.

High-level explanation

  • pg_sleep(seconds) makes the database wait for the given time. In time-based SQLi, an attacker uses sleep to infer whether a condition is true based on response time.
  • The pattern you gave tries to close a string literal, inject an OR condition, and then use a subquery with pg_sleep. If the vulnerable query evaluates the injected condition, the database may sleep (or at least delay) and the attacker can infer something about the data or existence of a vulnerability.
  • The "--" at the end is a SQL comment marker, used to ignore the rest of the original query.

Why this matters

  • If your application concatenates user input into SQL without parameterization, it may be vulnerable to SQL injection.
  • Time-based injections can reveal information even when errors aren’t shown to the user.

Defensive measures (exam-relevant guidance)

  • Use parameterized queries everywhere. Do not build SQL by string concatenation. Example (PostgreSQL, pseudocode):
    • cur.execute("SELECT * FROM users WHERE username = %s", (username,))
  • If you’re using an ORM, enable its parameterization features and avoid raw string building with user input.
  • Input validation and length checks help, but are not sufficient alone; rely on parameterization first.
  • Least-privilege DB access:
    • The application should connect with a user that has only the permissions it needs (e.g., read/write on specific tables, not superuser).
    • Restrict or monitor use of dangerous functions (pg_sleep, etc.) where possible; use role-based access controls.
  • Defense-in-depth:
    • Activate a statement_timeout in PostgreSQL to automatically abort long-running queries.
    • Enable logging for slow or suspicious queries; use auditing (e.g., pgaudit) to detect injection attempts.
    • Use a web application firewall (WAF) and input sanitization as secondary layers, not the primary defense.
  • Safe testing practices:
    • Practice in a controlled lab environment you own; never test against production or systems you’re not authorized to test.

If you’re studying for an exam, I can help with:

  • A short example showing safe vs. unsafe code (before/after).
  • Common SQLi patterns and how parameterization blocks them.
  • A few practice questions about identifying vulnerabilities and applying mitigations.