Skip to content

Add new tamper script 'mysqlversioncomment.py' #5923

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

pinoyvendetta
Copy link

@pinoyvendetta pinoyvendetta commented Jul 1, 2025

Description

This pull request introduces a new tamper script, mysqlversioncomment.py, designed to obfuscate SQL injection payloads targeting MySQL databases. The script wraps a comprehensive list of common SQL keywords, functions, and information schema objects within MySQL-specific versioned comments (e.g., /*!50000KEYWORD*/).

This obfuscation technique is effective at bypassing basic Web Application Firewalls (WAFs) and Intrusion Detection Systems (IDS) that perform simple keyword filtering without correctly parsing MySQL's versioned comment syntax.


How it Works

The script iterates through a predefined list of keywords and functions. To ensure correctness, it replaces longer keywords first (e.g., GROUP BY before BY) and uses word boundaries to prevent accidental replacement of substrings within other words.

Example of transformation:

  • Before:

    1 UNION SELECT GROUP_CONCAT(table_name) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = database()
  • After:

    1 /*!50000UNION*/ /*!50000SELECT*/ /*!50000GROUP_CONCAT*/(/*!50000table_name*/) /*!50000FROM*/ /*!50000INFORMATION_SCHEMA.TABLES*/ /*!50000WHERE*/ /*!50000table_schema*/ = /*!50000database()*/

This addition provides another valuable tool for penetration testers to use when faced with filtered environments.

Replaces common SQL keywords with MySQL versioned comments (e.g., 'SELECT' becomes '/*!50000SELECT*/').
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant