====== Hacking - SQL Injection Cheat Sheet (DB2) ====== |Version|select versionnumber, version_timestamp from sysibm.sysversions;| |Comments|select blah from foo; -- comment like this| |Current User| select user from sysibm.sysdummy1; select session_user from sysibm.sysdummy1; select system_user from sysibm.sysdummy1; | |List Users| N/A (I think DB2 uses OS-level user accounts for authentication.) Database authorities (like roles, I think) can be listed like this: select grantee from syscat.dbauth; | |List Password Hashes|N/A (I think DB2 uses OS-level user accounts for authentication.)| |List Privileges| select * from syscat.tabauth; -- privs on tables select * from syscat.dbauth where grantee = current user; select * from syscat.tabauth where grantee = current user; | |List DBA Accounts|TODO| |Current Database|select current server from sysibm.sysdummy1;| |List Databases|SELECT schemaname FROM syscat.schemata;| |List Columns|select name, tbname, coltype from sysibm.syscolumns;| |List Tables|select name from sysibm.systables;| |Find Tables From Column Name|TODO| |Select Nth Row| select name from (SELECT name FROM sysibm.systables order by name fetch first N+M-1 rows only) sq order by name desc fetch first N rows only; | |Select Nth Char|SELECT SUBSTR('abc',2,1) FROM sysibm.sysdummy1; -- returns b| |Bitwise AND|[[http://www.tar.hu/sqlbible/sqlbible0084.html|This page]] seems to indicate that DB2 has no support for bitwise operators!| |ASCII Value -> Char|select chr(65) from sysibm.sysdummy1; -- returns 'A'| |Char -> ASCII Value|select ascii('A') from sysibm.sysdummy1; -- returns 65| |Casting| SELECT cast('123' as integer) FROM sysibm.sysdummy1;| SELECT cast(1 as char) FROM sysibm.sysdummy1; | |String Concatenation| SELECT 'a' concat 'b' concat 'c' FROM sysibm.sysdummy1; -- returns 'abc' select 'a' || 'b' from sysibm.sysdummy1; -- returns 'ab' | |If Statement|TODO| |Case Statement|TODO| |Avoiding Quotes|TODO| |Time Delay|???. See [[https://www.microsoft.com/technet/community/columns/secmvp/sv0907.mspx|Heavy Queries]] article for some ideas.| |Make DNS Requests|TODO| |Command Execution|TODO| |Local File Access|TODO| |Hostname, IP Address|TODO| |Location of DB files|TODO| |Default/System Databases|TODO| ---- ===== References ===== https://www.michaelboman.org/books/sql-injection-cheat-sheet-db2