freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Tcsec安全研究院|postgreSQL与Mysql利用的一些差异
2022-11-17 10:46:48
所属地 浙江省

在之前的某云sql挑战赛中,发现psql的特性与其他数据库有些许不同。经过事后的一些研究,发现一些有趣的特性,特此分享给各位。(本次分享测试的postgresql版本为 v14.5)。

单引号的特性

在postgresql官方文档中记录着一个单引号的特性,如下:
image
简单理解就是一个字符串常量可以用单引号和换行符分割,经过测试,发现以下语法均支持。
image
image
小结:由于语法结构的特殊性,一些语义分析的waf可能不能正常识别该语法。说明可以利用该语法特性混淆绕过一些waf的检测。

双引号的特性

在postgresql官方文档中,双引号被用于解决关键字和用户定义的冲突问题,假如用户需要新建一个user表:
image
以上报错的主要原因为:user是关键字。postgresql可通过双引号包裹的形式用于区分用户定义和内置关键字之间的区别,当然列名也同样可以用双引号包裹。

但是这个特性是有什么用呢?双引号包裹的字符并不是字符串,不能使用字符串的各种编码以及函数。

直到在官方文档中发现一个内置的编码格式,支持双引号包裹的特殊类型,unicode编码,支持3种unicode格式:
image
这样就可用于表名、字段名关键字的绕过。
image

image

数字的特性

在测试过程中发现一个有趣的现象:数字+关键字的情况下,关键字依旧会高亮显示。
image

通过这一特征我们作出猜测:关键字能不能正常识别呢?

经过大量的测试,最终发现在一个正常语法结构支持出现数字的地方,假如后面有关键字,删除空格就不会受影响,举例如下:
image
小结:简单来说就是在语法正确的情况下,数字和关键字之间的空格可删除(是数字+关键字的情况,不可调换)。

XML的函数

在postgresql官方文档中,XML存在几个特殊的函数 query_to_xml 、table_to_xml、database_to_xml , 官方文档用法如下:
image
table_to_xml 可通过传入表名直接查询数据,返回数据格式为XML格式。
image
image
query_to_xml 可通过传入查询语句,返回数据格式为XML格式。
image
image
database_to_xml 可直接查询所有用户表的数据。
image
image

其中最值得注意的是这些函数传入的参数都是字符串,而且还支持各种字符串的函数和编码格式。
image
这里只简单列举几个用法,该特性可用于过一些未过滤的xml函数关键字的waf。
总结
postgresql还有很多不同于其他数据库的特性,官方文档中也还有很多其他有意思的函数,本文只简单的分析研究院发现的4个比较有用、又不同于其他数据库的性质或者函数,希望以后能跟大家分享更多有意思的性质。

# PostgreSQL # sql注入利用方式
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录