Step 1: Payload Delivery: The attacker crafts a malicious message containing format string specifiers (e.g., %x, %s, %n).
Step 2: Message Transmission: The attacker sends the crafted message to a target user of the vulnerable LICQ client.
Step 3: Message Processing: The vulnerable LICQ client receives the message and processes it, likely displaying it to the user.
Step 4: Vulnerability Trigger: The LICQ client passes the attacker-controlled message, including the format string specifiers, to a function like printf or fprintf without proper sanitization.
Step 5: Memory Manipulation: The format string specifiers are interpreted by the printf or fprintf function, allowing the attacker to read from or write to arbitrary memory locations.
Step 6: Code Execution (Potential): If the attacker successfully crafts a payload that overwrites a function pointer or other critical data, they can achieve arbitrary code execution, gaining control of the compromised system.