sqlmap/extra/esperanto/wordlist.py
2026-07-16 18:13:32 +02:00

77 lines
4.1 KiB
Python

#!/usr/bin/env python
"""
Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
Common table/column names for the brute-force fallback used when the system catalog
is unreadable or unknown (permission wall, exotic/Frankenstein engine, CTF). This is
the "know nothing about the schema, guess the usual names" path - the equivalent of
sqlmap's --common-tables / --common-columns. sqlmap's own (much larger) wordlists are
preferred when this package runs inside the repo; the bundled curated lists below are
the self-contained fallback so the standalone CLI works with no external files.
"""
import os
# curated, most-common first; kept deliberately small so brute-forcing stays practical
# over a slow blind oracle (sqlmap's full lists are used instead when available)
_BUNDLED_TABLES = (
"users", "user", "admin", "administrator", "accounts", "account", "members",
"member", "customers", "customer", "clients", "client", "people", "persons",
"employees", "staff", "contacts", "profiles", "profile", "sessions", "session",
"orders", "order", "products", "product", "items", "item", "categories",
"category", "cart", "carts", "invoices", "payments", "transactions", "coupons",
"rates", "reviews", "ratings", "inventory", "stock", "shipping", "posts", "post",
"articles", "pages", "page", "comments", "messages", "message", "news", "blog",
"blogs", "tags", "notifications", "subscriptions", "feedback", "files", "file",
"uploads", "images", "documents", "media", "config", "configuration", "settings",
"setting", "options", "preferences", "roles", "role", "permissions", "groups",
"group", "tokens", "token", "secrets", "secret", "credentials", "passwords",
"keys", "apikeys", "api_keys", "cards", "creditcards", "credit_cards", "logs",
"log", "events", "event", "audit", "audit_log", "history", "activity", "data",
"records", "metadata", "backup", "backups", "temp", "tmp", "test", "flags",
)
_BUNDLED_COLUMNS = (
"id", "uid", "user_id", "userid", "guid", "name", "username", "uname", "user",
"login", "handle", "nick", "nickname", "pass", "passwd", "password", "pwd",
"pass_hash", "password_hash", "hash", "salt", "email", "mail", "e_mail",
"first_name", "firstname", "fname", "last_name", "lastname", "lname", "fullname",
"full_name", "surname", "display_name", "phone", "mobile", "tel", "address",
"addr", "street", "city", "country", "state", "zip", "zipcode", "postcode",
"dob", "birthdate", "age", "gender", "sex", "role", "roles", "is_admin", "admin",
"level", "active", "is_active", "enabled", "disabled", "banned", "status",
"verified", "created", "created_at", "created_on", "updated", "updated_at",
"modified", "deleted", "deleted_at", "last_login", "timestamp", "date", "time",
"token", "api_key", "apikey", "session", "secret", "key", "value", "data",
"content", "body", "text", "title", "subject", "description", "comment", "note",
"notes", "message", "url", "link", "ip", "ip_address", "useragent", "referer",
"cc", "card", "creditcard", "credit_card", "card_number", "cvv", "cvc", "expiry",
"amount", "price", "cost", "total", "balance", "quantity", "qty", "count", "code",
"type", "category", "tag", "slug", "flag", "flags", "extra", "meta", "settings",
)
def _fromFile(fname):
# sqlmap's own wordlist when this runs inside the repo (data/txt/<fname>).
# located relative to this file: extra/esperanto/ -> ../../data/txt/
path = os.path.join(os.path.dirname(__file__), "..", "..", "data", "txt", fname)
try:
with open(path) as fh:
names = [line.strip() for line in fh if line.strip() and not line.startswith("#")]
return names or None
except (IOError, OSError):
return None
def commonTables():
"""Candidate table names, most-common first. sqlmap's list if present, else bundled."""
return _fromFile("common-tables.txt") or list(_BUNDLED_TABLES)
def commonColumns():
"""Candidate column names, most-common first. sqlmap's list if present, else bundled."""
return _fromFile("common-columns.txt") or list(_BUNDLED_COLUMNS)