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

555-1 OR 105=(SELECT 105 FROM PG_SLEEP(45.622))--

Ответ нейросети
18 июня 2026 00:03

That string is a classic time-based SQL injection payload aimed at PostgreSQL.

What it does (high level):

  • The part "555-1" is meant to be user-supplied input.
  • The "OR 105=(SELECT 105 FROM PG_SLEEP(45.622))" injects a subquery that calls PostgreSQL’s sleeping function (PG_SLEEP) to delay the response by about 45.6 seconds if the injected code is executed.
  • The trailing “--” comments out the rest of the original query, so the attacker’s payload isn’t rejected by syntax errors after the injection.

Why this is a problem:

  • If the application builds SQL by concatenating user input, an attacker can cause delays (and potentially infer information) without proper authentication.
  • It can lead to denial of service (slow responses) and, in other variants, data leakage or tampering.

Defensive measures (recommended for exams and real systems):

  • Use parameterized queries/prepared statements everywhere. Treat user input as data, not code.
    • Example (typical patterns):
      • Python (psycopg2): cursor.execute("SELECT * FROM users WHERE id = %s", (user_input,))
      • Node.js (pg): client.query("SELECT * FROM users WHERE id = $1", [user_input])
  • Validate and constrain inputs:
    • If a numeric ID is expected, coerce to integer and reject non-numeric input.
    • Use whitelists for allowed values when possible.
  • Least privilege for the database account:
    • The app should connect with an account that has only the minimal permissions necessary.
    • Consider restricting access to sensitive functions (e.g., pg_sleep) if feasible.
  • Use application-level safeguards:
    • Input length checks, type checks, and escaping where appropriate (but don’t rely on escaping alone).
    • Prefer ORM or query builders that bind parameters automatically.
  • Logging and monitoring:
    • Monitor for unusual delays, failed queries, or patterns that resemble injection attempts.
    • Consider a Web Application Firewall (WAF) or query-pattern monitoring.
  • Error handling:
    • Do not reveal detailed DB errors to users; generic messages reduce information leakage.
  • If you must test for vulnerabilities ethically:
    • Do so only in a controlled, authorized environment (lab or test system) and with explicit permission.
    • Use safe, approved scanning tools and follow responsible disclosure practices.
    • In PostgreSQL environments, consider tightening function privileges as part of a defense-in-depth strategy.

If you want, I can show a quick side-by-side example of a vulnerable vs. safe snippet in a language you’re studying for your exam.