PostgreSQL injection
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
如果你对 黑客职业 感兴趣并想要攻克不可攻克的目标 - 我们正在招聘! (需要流利的波兰语书写和口语能力).
本页面旨在解释不同的技巧,帮助你利用在 PostgreSQL 数据库中发现的 SQL 注入,并补充你可以在 https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md 上找到的技巧。
PostgreSQL 模块 dblink
提供连接到其他 PostgreSQL 实例和执行 TCP 连接的能力。这些功能与 COPY FROM
功能结合,使得权限提升、端口扫描和 NTLM 挑战响应捕获等操作成为可能。有关执行这些攻击的详细方法,请查看如何 执行这些攻击。
你可以 阅读这个示例 来查看一个 CTF 示例,如何将数据加载到大对象中,然后在函数 dblink_connect
的用户名中外泄大对象的内容。
查看如何从 PostgreSQL 破坏主机并提升权限:
5432,5433 - Pentesting Postgresql操纵字符串可以帮助你 绕过 WAF 或其他限制。 在此页面 你可以找到一些有用的字符串函数。
请记住,PostgreSQL 支持堆叠查询,但如果在期望仅返回 1 个响应时返回 2 个响应,许多应用程序会抛出错误。但是,你仍然可以通过时间注入滥用堆叠查询:
query_to_xml
此函数将以XML格式返回所有数据,仅在一个文件中。如果您想在一行中转储大量数据,这是理想的:
database_to_xml
此函数将整个数据库以 XML 格式转储为仅 1 行(如果数据库非常大,请小心,因为您可能会导致 DoS 或甚至影响您自己的客户端):
如果您可以运行 查询 并将其 放在字符串中(例如使用 query_to_xml
函数)。 您可以使用 convert_from 将字符串作为十六进制传递,从而以这种方式绕过过滤器:
如果无法在有效负载中使用引号,可以通过 CHR
绕过此限制,适用于基本子句(字符连接仅适用于基本查询,如 SELECT、INSERT、DELETE 等。它不适用于所有 SQL 语句):
或者使用 $
。这两个查询返回相同的结果:
如果你对黑客职业感兴趣并想要攻克不可攻克的目标 - 我们正在招聘!(要求流利的波兰语书写和口语)。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)