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

555-1 OR 102=(SELECT 102 FROM PG_SLEEP(28.39))--

Нейросеть18 июня 2026 01:44

That string is a classic SQL injection payload, specifically a time-based (blind) test for PostgreSQL using pg_sleep.

What it is doing (high level):

  • It’s trying to inject SQL into an application’s query.
  • The part with pg_sleep(28.39) is designed to pause the database for 28.39 seconds if the injection succeeds.
  • The comment marker -- at the end is used to discard the rest of the original query.
  • The overall idea is to observe a delay in the page response to infer whether the injection was successful.

Why this matters for exam prep:

  • Time-based blind SQL injection is a common topic. You should be able to recognize:
    • What a pg_sleep (or similar sleep function) does in a PostgreSQL context.
    • How an OR-based payload can force a boolean condition to trigger the delay.
    • Why comments are used to terminate the rest of the original query.
  • You should also know how to defend against it (see below).

Defensive/mitigation notes (important for exams and real life):

  • Use parameterized queries / prepared statements everywhere. Do not concatenate user input into SQL strings.
    • Example (pseudo):
      • Vulnerable: "SELECT * FROM users WHERE id = " + userInput
      • Safe: "SELECT * FROM users WHERE id = ?" with a bound parameter, or named parameters
  • Validate and whitelist inputs. Treat input as untrusted and reject anything that doesn’t meet expected format (e.g., numeric IDs should be digits only).
  • Principle of least privilege:
    • The application DB user should have only the minimum privileges needed (no superuser rights, no unnecessary table permissions).
    • Separate read/write roles if possible.
  • Disable or tightly control error messages returned to clients; detailed DB errors can aid an attacker.
  • Use a WAF or IDS to detect common injection patterns and block suspicious payloads.
  • Monitor and test in a safe, legal lab:
    • Use deliberately vulnerable but isolated environments (e.g., intentionally vulnerable apps in a sandbox or training platforms) to practice defensive coding.
    • Never run exploitation attempts against systems you don’t own or don’t have explicit authorization to test.

Example contrast for exam clarity:

  • Vulnerable code (teaching point):
    • cursor.execute("SELECT * FROM users WHERE id = " + user_input)
  • Secure code:
    • cursor.execute("SELECT * FROM users WHERE id = %s", (user_input,))
  • In both cases, never expose raw SQL to concatenated user input; use placeholders/binders.

If you want, I can tailor this to your exam: e.g., provide a short Q&A you might see (definition, how a time-based injection works, how to fix vulnerable code in a specific language, and a defensive checklist). I can also give you a safe lab setup (steps to create a test PostgreSQL environment and some vulnerable samples to practice securing).

555-1 OR 102=(SELECT 102 FROM PG_SLEEP(28.39))--
That string is a classic SQL injection payload, specifically a time-based (blind) test for PostgreSQL using pg_sleep. What it is doing (high level): - It’s trying to inject SQL into an application’s query. - The part with pg_sleep(28.39) is designed to pause the database for 28.39 seconds if the injection succeeds. - The comment marker -- at the end is used to discard the rest of the original query. - The overall idea is to observe a delay in the page response to infer whether the injection was successful. Why this matters for exam prep: - Time-based blind SQL injection is a common topic. You should be able to recognize: - What a pg_sleep (or similar sleep function) does in a PostgreSQL context. - How an OR-based payload can force a boolean condition to trigger the delay. - Why comments are used to terminate the rest of the original query. - You should also know how to defend against it (see below). Defensive/mitigation notes (important for exams and real life): - Use parameterized queries / prepared statements everywhere. Do not concatenate user input into SQL strings. - Example (pseudo): - Vulnerable: "SELECT * FROM users WHERE id = " + userInput - Safe: "SELECT * FROM users WHERE id = ?" with a bound parameter, or named parameters - Validate and whitelist inputs. Treat input as untrusted and reject anything that doesn’t meet expected format (e.g., numeric IDs should be digits only). - Principle of least privilege: - The application DB user should have only the minimum privileges needed (no superuser rights, no unnecessary table permissions). - Separate read/write roles if possible. - Disable or tightly control error messages returned to clients; detailed DB errors can aid an attacker. - Use a WAF or IDS to detect common injection patterns and block suspicious payloads. - Monitor and test in a safe, legal lab: - Use deliberately vulnerable but isolated environments (e.g., intentionally vulnerable apps in a sandbox or training platforms) to practice defensive coding. - Never run exploitation attempts against systems you don’t own or don’t have explicit authorization to test. Example contrast for exam clarity: - Vulnerable code (teaching point): - cursor.execute("SELECT * FROM users WHERE id = " + user_input) - Secure code: - cursor.execute("SELECT * FROM users WHERE id = %s", (user_input,)) - In both cases, never expose raw SQL to concatenated user input; use placeholders/binders. If you want, I can tailor this to your exam: e.g., provide a short Q&A you might see (definition, how a time-based injection works, how to fix vulnerable code in a specific language, and a defensive checklist). I can also give you a safe lab setup (steps to create a test PostgreSQL environment and some vulnerable samples to practice securing).