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

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

Ответ нейросети
17 июня 2026 22:51

Here’s a concise, exam-focused explanation of what that payload is doing and why it matters.

What the snippet represents

  • It looks like a SQL injection payload aimed at Oracle.
  • The part "555'|| ... ||'" shows closing a previous string literal, injecting a function call, and then reopening a string, which is a classic way to escape out of a quoted input.
  • CHR(98)||CHR(98)||CHR(98) constructs the string 'bbb' (since CHR(98) is the character 'b' in ASCII). So the injected function call is using the pipe name 'bbb'.
  • DBMS_PIPE.RECEIVE_MESSAGE(pipe_name, timeout) is Oracle’s inter-session pipe API. RECEIVE_MESSAGE reads a message from a named pipe, waiting up to the specified timeout (e.g., 15 seconds). If a message is available, it returns it; otherwise it times out after the timeout.

What the payload attempts to do (high level)

  • The attacker is trying to trigger a call to DBMS_PIPE.RECEIVE_MESSAGE from within the vulnerable query.
  • Two common angles in exams:
    • Time-based blind SQL injection: the 15-second timeout can cause the response time to vary. If an attacker can alter the timeout based on a condition, they can infer data from the database by measuring response times.
    • Out-of-band or data leakage via the pipe: if the attacker can influence or observe messages on the pipe, they might try to exfiltrate data or cause the database to wait for messages in a way that reveals information.
  • The use of CHR(98) to build 'bbb' is a trick to bypass string-quoting filters.

Why this matters for security (exam-style points)

  • It demonstrates how poorly sanitized input can inject database-side logic, not just alter a query’s results.
  • It illustrates a time-based blind vulnerability: even if you don’t see direct data leakage, delays introduced by the database can reveal information based on how long a query takes.
  • It shows the risk of using database features (like DBMS_PIPE) that can be abused if privileges are too broad or if such features are enabled in an application layer without need.

Defenses and best practices (exam-relevant)

  • Use parameterized queries (bind variables) and avoid building SQL by string concatenation with user input.
  • Whitelist/validate input rigorously; avoid allowing quotes or function calls to be injected.
  • Disable or tightly restrict DBMS_PIPE usage if not needed; grant such privileges only to trusted code paths.
  • Monitor and alert on unusual DBMS_PIPE usage (e.g., unexpected RECEIVE_MESSAGE calls, long delays, or unusual pipe names).
  • Use least privilege: applications should connect with accounts that have only the privileges they need.
  • Consider defense-in-depth: input validation, application-layer WAF rules, and database auditing.
  • For exams, be ready to discuss other payload patterns and how to recognize them (e.g., time delays, UNION-based injections, error-based injections).

If you’d like, I can provide:

  • A few exam-style questions with model answers.
  • A short lab-safe exercise outline to practice detecting and mitigating such injections in a controlled environment.