用于解密pg_auth Postgresql的密钥
我想知道用户的密码连接数据库,而不需要用户输入他们的密码数据库。用于解密pg_auth Postgresql的密钥,postgresql,Postgresql,我想知道用户的密码连接数据库,而不需要用户输入他们的密码数据库。 我知道连接数据库postgresql的密码保存在pg_auth中。但是我不知道没有密钥如何解密。根据文档,: 密码(可能加密);空如果 没有一个如果密码是加密的, 此列将包含字符串 md5后跟一个32字符 十六进制MD5散列。MD5散列 将是用户密码的一部分 连接到他们的用户名(用于 例如,如果用户joe拥有密码 xyzzy,PostgreSQL将存储md5 xyzzyjoe的散列) 换句话说,这个密码很可能是md5加密的(这是P
我知道连接数据库postgresql的密码保存在pg_auth中。但是我不知道没有密钥如何解密。根据文档,: 密码(可能加密);空如果 没有一个如果密码是加密的, 此列将包含字符串 md5后跟一个32字符 十六进制MD5散列。MD5散列 将是用户密码的一部分 连接到他们的用户名(用于 例如,如果用户joe拥有密码 xyzzy,PostgreSQL将存储md5 xyzzyjoe的散列) 换句话说,这个密码很可能是md5加密的(这是PostgreSQL的默认密码),您无法获取纯文本,因为它不存储在任何地方。例如,假设我有
postgres
角色和12345
密码:
SELECT rolpassword FROM pg_authid WHERE rolname LIKE 'postgres';
rolpassword
-------------------------------------
md5738d021d4bc194576641fa9936656836
(1 row)
是单向散列函数,因此恢复其参数并非易事(但您可以尝试使用或使用rainbow表):
另一种(更简单的)方法是将身份验证方法更改为非密码(例如ident
)
编辑:
使用带有PostgreSQL的md5($pass.$salt)
模式的工具(在使用之前阅读EULA),您可以编写(当然,这只是简化的CPU暴力示例):
echo 738d021d4bc194576641fa9936656836:postgres>hash.txt
时间./hashcat-cli64.bin——哈希模式1——攻击模式3——bf cs buf 0123456789\
--bf pw min 1--bf pw max 5 hash.txt
...
738d021d4bc194576641fa9936656836:博士后:12345
所有哈希都已恢复
实0.010s
用户0m0.012s
系统0m0.004s
根据文件:
密码(可能加密);空如果
没有一个如果密码是加密的,
此列将包含字符串
md5后跟一个32字符
十六进制MD5散列。MD5散列
将是用户密码的一部分
连接到他们的用户名(用于
例如,如果用户joe拥有密码
xyzzy,PostgreSQL将存储md5
xyzzyjoe的散列)
换句话说,这个密码很可能是md5加密的(这是PostgreSQL的默认密码),您无法获取纯文本,因为它不存储在任何地方。例如,假设我有postgres
角色和12345
密码:
SELECT rolpassword FROM pg_authid WHERE rolname LIKE 'postgres';
rolpassword
-------------------------------------
md5738d021d4bc194576641fa9936656836
(1 row)
是单向散列函数,因此恢复其参数并非易事(但您可以尝试使用或使用rainbow表):
另一种(更简单的)方法是将身份验证方法更改为非密码(例如ident
)
编辑:
使用带有PostgreSQL的md5($pass.$salt)
模式的工具(在使用之前阅读EULA),您可以编写(当然,这只是简化的CPU暴力示例):
echo 738d021d4bc194576641fa9936656836:postgres>hash.txt
时间./hashcat-cli64.bin——哈希模式1——攻击模式3——bf cs buf 0123456789\
--bf pw min 1--bf pw max 5 hash.txt
...
738d021d4bc194576641fa9936656836:博士后:12345
所有哈希都已恢复
实0.010s
用户0m0.012s
系统0m0.004s