Tcsec安全研究院|postgreSQL与Mysql利用的一些差异

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

·单引号的特性

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

双引号的特性

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

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

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

数字的特性

在测试过程中发现一个有趣的现象:数字+关键字的情况下,关键字依旧会高亮显示。
在这里插入图片描述通过这一特征我们作出猜测:关键字能不能正常识别呢?

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

XML的函数

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

在这里插入图片描述其中最值得注意的是这些函数传入的参数都是字符串,而且还支持各种字符串的函数和编码格式。
在这里插入图片描述这里只简单列举几个用法,该特性可用于过一些未过滤的xml函数关键字的waf。

总结

postgresql还有很多不同于其他数据库的特性,官方文档中也还有很多其他有意思的函数,本文只简单的分析研究院发现的4个比较有用、又不同于其他数据库的性质或者函数,希望以后能跟大家分享更多有意思的性质。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值