`

postgresql基本语法

 
阅读更多
1.注释、结束标记、连接符

a.PostgreSQL既然遵循SQL语言,当然支持–注释;

b.PostgreSQL支持/*和/**/注释,这点类似于Mysql;

c.PostgreSQL数据库使用psql的时候,需要在命令后加上;(分号)或者是\g来表示语句已经结束以执行查询.

d.PostgreSQL是采用||符号来连接字符串的,注意使用^,小心|被转义。

2.自动匹配

PostgreSQL不像Mysql能够自动匹配字段,这点类似于oracle,所以在注入的时候要注意下,而且默认情况下是支持union查询的;

3.连接PostgreSQL

默认情况下是不给外连的,如果想远程管理PostgreSQL数据库的话,需要修改../PostgreSQL/data/pg_bha.conf文件, 请参考 PostgreSQL学习手册.PostgreSQL默认用户是postgres(类似于mysql的root),默认端口是5432,默认系统库是 postgres。

使用psql -h ip -d dataname -p port -U username,这里注意-U参数是大写,如果是本机采用默认安装的话,直接使用psql -U postgres后会提示输入密码,正确输入密码后会出现postgres=#的字符(类似于mysql中的mysql>),就可以正常使用 psql了。

\? 显示pgsql命令的说明

\h 显示sql命令的说明

\q 是退出

\l 是现实系统中所有的数据库

4.pgAdmin III

a.pgAdmin III是PostgreSQL中自带的界面化数据库管理程序,可以查询PostgreSQL数据库中所有域、函数、序列、数据表结构及相关属性、触发器函数、视图等。

注入PostgreSQL

既然PostgreSQL是RDBMS,所以系统中所有数据库的结构会保存系统库中,所以注入的时候就相对比较方便。由于注释方式和mysql是一样,如何判断是什么数据库?关于这点我也没有一个标准的答案,我想可以扫描5432端口(如何web和库没有分离的情况下),使用version()函数的返回结果来判断,直接使用查询语句如select * from pg_class/select * from pg_group的返回结果来判断数据库类型.由于PostgreSQL的目录页存在information_schema,我手上也没有 PostgreSQL数据库的注射点,所以我也不知道能不能使用select schema_name from information_schema_schemata来判断,不好意思,关于使用information_schema只是我的想法,有条件的朋友验证下。

介绍下PostgreSQL中内置函数、表和视图在入侵的应用。

current_database() 当前数据库名字

session_user 会话用户 |

current_user 目前执行环境中的用户名 |这三个函数调用时候不需要加()

user 和session_user一样 |

inet_client_port() 远程端口

cast(sourcetype AS targettype) 定义类型转换

current_setting() 以查询形式获取setting_name 设置的当前值

convert() 编码转换

pg_stat_user_tables 存放系统所有表名的视图,关键字段是relname,使用select relname from pg_stat_user_tables limit offset,1 来达到逐个读取表名的目的

pg_stat_all_tables 和pg_stat_all_tables视图功能一样

pg_shadow 看到shadow大家是否想到/etc/shadow,此表包含数据库用户的信息,关键字段username、passwd和usesuper(超级用户的意思),不过此表被做了权限设置

pg_user 这个表结构和pg_shadow一样,不过此表的全局可读,passwd字段可能被清空或者加密

pg_group 定义组以及哪些用户属于哪个组的信息,关键字段groname

information_schema.columns 这个目录对象中保存了所有的字段,关键字段是column_name,使用select column_name from information_columns where table_name=tablename limit offset,1这样就可以达到读取每个表名的字段

遍历PG当前数据库中的全部表

SELECT tablename FROM pg_tables
WHERE tablename NOT LIKE ‘pg%’
AND tablename NOT LIKE ‘sql_%’
ORDER BY tablename;

查询PG数据库中的所有表包括系统表

select relname as table_name from pg_class where relkind=’r';

这个类似mssql里的master
然后你用SELECT datname FROM pg_database 这个就可以看到所有的数据库了
然后你写入数据库 库名 用SELECT table_schema,table_name FROM information_schema.tables
这个查询表

读文件

首先需要建立一个表,然后copy文件内容到表中,在读取表内容,思路是这样的
create table read (line text);
copy read from ‘/etc/passwd’;alter table read add id serial–
select * from read;
drop table read;
思路就是这样的,具体怎么使用就看大家自己发挥了(encode,^_^)

分享到:
评论

相关推荐

    Postgresql基础语法汇总.zip_PostgreSQL基础语法汇总

    根据PostgreSQL10.1的说明手册,对一些基础的语法,例如数据库创建,表格创建修改、约束、窗口函数等操作和相关概念通过思维导图软件进行了一次汇总,希望能帮到各位。

    PostgreSQL常用语法收集.sql

    PostgreSQL常用语法收集,Postgresql 当中有四种方式获取当前时间。时间格式化,时间间隔计算等等

    PostgreSQL常用基本语法和几条简单技巧

    PostgreSQL常用基本语法和几条简单技巧,包含 字段自增长 数据库内文本类转数字等

    PostgreSQL入门学习手册

    PostgreSQL入门学习手册、基础语法。

    Oracle至PostgreSQL数据库迁移方案.pptx

    Ora2PG可以支持大多数SQL的转换,但某些情况下仍需要人工校正语法,使其兼容PostgreSQL。其主要功能包括: * 导出具有唯一、主要、外键和检查约束的完整数据库模式(表、视图、序列、索引) * 导出用户和组的授予/...

    炼数成金深度学习PostgreSQL.txt

    第九课Postgresql引擎开发基础:SQL语法分析器、优化器实现分析,扩展系统函数。第十课Postgresql引擎开发深入:数据迁移工具实现分析,修改完善COPY命令。第十一课Postgresql引擎开发深入:执行优化器实现分析,...

    PostgreSQL PG&Oracle-备份技术完美攻略

    pg_dump 命令的基本语法为: ``` pg_dump -U username database_name > backup_file ``` 其中,username 是 PostgreSQL 数据库的用户名,database_name 是要备份的数据库的名称,backup_file 是备份文件的名称。 ...

    PostgreSQL 9.4.4 中文手册.chm

    因此在2013年底PostgreSQL中国用户会成立了由志愿者组成的新的PG中文手册翻译小组,在社区第一代功勋laser所翻译的8.2.3中文手册的基础上开启了9.3.1版本的手册翻译工作。 目前已经完成9.3的所有sgml文件的翻译,...

    PostgreSQL UNION 操作符

    PostgreSQL UNION 操作符 PostgreSQL UNION 操作符合并两个或多个 SELECT ...UNIONS 基础语法如下: SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FRO

    PostgreSQL WITH 子句

    PostgreSQL WITH 子句 在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。 WITH 子句有助于将复杂的...WITH 查询的基础语法如下: WITH name_for_summary_data AS ( SELECT Stat

    pgadmin命令操作

    基本语法如下: ```sql pg_dump -U 用户名 数据库名 > 文件名.sql ``` 其中,`-U` 选项指定了用户名,`数据库名` 是要备份的数据库的名称,`文件名.sql` 是备份文件的名称。 例如,要备份名为 `mydb` 的数据库,...

    PostgreSQL多表插入(兼容oracle insert all)

    在oracle中我们可以使用insert all或者insert first语句,两者语法基本一致,区别在于: insert first:对于每一行数据,只插入到第一个when条件成立的表,不继续检查其他条件。 insert all :对于每一行数据,对每...

    PostgreSQL HAVING 子句

    PostgreSQL HAVING 子句 HAVING 子句可以让我们筛选...HAVING 子句必须放置于 GROUP BY 子句后面,ORDER BY 子句前面,下面是 HAVING 子句在 SELECT 语句中基础语法: SELECT column1, column2 FROM table1, table2 WHE

    pgdoc:MixERP PostgreSQL 数据库文档

    #PgDoc PostgreSQL 文档器 PgDoc 从你的 PostgreSQL 数据库创建漂亮的数据库文档。 它是一个小型控制台应用程序,运行于: ... #文档 ##基本语法 视窗 MixERP.Net.Utilities.PgDoc.exe -s=[server[:port]

    PostgreSQL LIMIT 子句

    带有 LIMIT 子句的 SELECT 语句的基本语法如下: SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] 下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法: SELECT column1, column2, columnN ...

    EnterpriseDB企业版Linux安装指南

    EDB是基于postgresql的基础上的数据库,但是可以兼容oracle语法。

    B站Mosh老师sql三小时的课程笔记

    SELECT语句的基本语法如下: ```sql SELECT column1, column2, ... FROM tablename; ``` 其中,`column1`, `column2`等是要选取的列名,`tablename`是要选取数据的表名。 WHERE子句 WHERE子句用于指定选取数据的...

    activerecord-postgis-adapter:基于Postgresql和rgeo的PostGIS ActiveRecord连接适配器

    它扩展了ActiveRecord迁移语法,以支持创建空间类型的列和空间索引。 您可以控制PostGIS提供的各种属性,例如纬度,尺寸和地理数学与几何数学。 其次,它可以识别空间类型并将其正确地转换为RGeo几何对象。 适配器...

    spl常用语句.pdf

    基本的查询语法结构为: ```sql SELECT 字段 1, 字段 2 FROM 表名 ``` 其中,`字段 1` 和 `字段 2` 是要查询的字段,`表名` 是要查询的表名。 1. 条件判断 SPL语句中使用WHERE子句来指定查询条件。WHERE子句的基本...

    Python全栈从零入门:一份全面的思维导图

    Python基础:介绍了Python语言的基本语法、数据类型、控制流和函数等基础知识。这是全栈开发的基础,为后续的学习打下坚实的基础。 前端开发:涵盖了HTML、CSS和JavaScript等前端开发的基本知识。您将学习如何创建...

Global site tag (gtag.js) - Google Analytics