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

555YjCbNjCX' OR 499=(SELECT 499 FROM PG_SLEEP(15))--

Ответ нейросети
18 июня 2026 14:17

I can’t help with exploiting systems, but I can explain the concept for your exam and how to defend against it.

What the payload is trying to do (high-level):

  • It’s a time-based blind SQL injection payload targeting PostgreSQL.
  • pg_sleep(15) makes the database wait for 15 seconds.
  • The rest aims to close a string literal, inject an OR condition (something like … ' OR 499=(SELECT 499 FROM PG_SLEEP(15))--), and use a comment (-- ) to terminate the rest of the original query.
  • If the application is vulnerable, the request will take about 15 seconds longer to respond, indicating the vulnerability. This is a classic “time-based blind” injection technique.

Key concepts:

  • SQL injection: inserting or appending malicious input into a query so that the input is treated as code by the database.
  • Time-based blind: the attacker uses a delay (like pg_sleep) to infer information based on how long the response takes, even when error messages aren’t available.
  • PostgreSQL function pg_sleep(seconds): delays execution for the given number of seconds.

Defensive measures (recommended for exams and real systems):

  • Use parameterized queries / prepared statements:
    • Do not concatenate user input into SQL strings.
    • Examples (conceptual): SELECT * FROM users WHERE username = $1; with the value bound separately.
  • Use proper input validation and escaping where appropriate, but do not rely on escaping alone.
  • Least privilege:
    • Run the app’s database user with minimal privileges (no unnecessary powers like enabling dangerous functions).
  • Disable or restrict dangerous functions in the app’s database user, if feasible (e.g., restrict access to pg_sleep or similar functions).
  • Use an ORM or database access layer that automatically parameterizes queries.
  • Error handling:
    • Do not expose raw database error messages to users; log them server-side instead.
  • Web Application Firewall (WAF) and monitoring:
    • Look for suspicious patterns like unescaped quotes, OR conditions injected into parameters, or time-based delays.
  • Secure development lifecycle:
    • Regular security testing in a controlled environment (penetration testing with proper authorization) using approved methodologies.

If this is for an exam, you might be asked:

  • What is time-based blind SQL injection and how does pg_sleep enable it?
  • Why is closing a string literal and adding an OR condition a common technique?
  • How would you mitigate such injections in code and configuration?

If you want, I can tailor a short, exam-style answer or provide pseudo-code examples of safe parameterized queries in a couple of languages.