SQL注入--盲注及报错注入

attachments-2020-03-QWDASP6t5e7c42e7cf73e.jpg

盲注查询

盲注其实就是没有回显,不能直观地获得结果来调整注入数据,只能经过其余方式来获得是否注入成功,主要是利用了一些数据库内置函数来达到的web

布尔盲注

布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Falessql

其实登陆处的注入就是布尔型的,万能密码就是构造一个永真的查询,好比下面的数据库

select user from test where passwd=‘{injuct}’;
#构造永真,即令where的条件用于为真
select user from test where passwd=‘aa‘or’1’=‘1’;
#注入的数据是aa‘or’1’=‘1

密码输入不管是否正确,查询都成立。dom

布尔盲注其实就是利用了这种,咱们何时须要采用这种呢函数

1)当没有数据输出点时,咱们没有办法直观的判断注入的sql执行状况,spa

2)有正确或者错误的两种返回,好比查询正确返回一个页面,失败返回另外一个页面,可是没有数据orm

时间盲注

界面返回值只有一种,true 不管输入任何值 返回状况都会按正常的来处理。加入特定的时间函数,经过查看web页面返回的时间差来判断注入的语句是否正确xml

利用的内置函数对象

sleep(n):将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3):判断语句 若是第一个语句正确就执行第二个语句若是错误执行第三个语句

注入的语句教程

select user from test where passwd=‘aa‘and (if(ascii(substr(database(),1,1))>100,sleep(10),null));
#注入的数据是aa‘and (if(ascii(substr(database(),1,1))>100,sleep(10),null));--+

咱们何时须要采用这种呢

1)当没有数据输出点时,咱们没有办法直观的判断注入的sql执行状况,

2)不管查询结果都返回同一个数据,没法判断SQL语句执行状况

基于错误查询

有以下报错注入方法

#报错注入floor
(select 1 from (select count(*),concat((payload[]),floor(rand()*2))a from information_schema.columns group by a)b)limit 0,1
#报错注入extractvalue
select extractvalue(1,concat(0x5c,([payload])))
#报错注入updatexml
select 1=(updatexml(1,concat(0x3a,([payload])),1))

floor报错注入

floot是区镇函数,返回小于或等于 x 的最大整数

上面floor报错例子中floor中传入的是一个rand函数(返回 0 到 1 的随机数)。

floor报错注入主要利用的group by的机制,下面先来了解一下原理:

group by key的原理是循环读取数据的每一行,将结果保存于临时表中。
读取每一行的key时,若是key存在于临时表中,则不在临时表中更新临时表中的数据;若是该key不存在于临时表中,则在临时表中插入key所在行的数据。
group by floor(random(0)2)出错的缘由是key是个随机数,检测临时表中key是否存在时计算了一下floor(random(0)2)可能为0,若是此时临时表只有key为1的行不存在key为0的行,那么数据库要将该条记录插入临时表,因为是随机数,插时又要计算一下随机值,此时 floor(random(0)*2)结果可能为1,就会致使插入时冲突而报错。
即检测时和插入时两次计算了随机数的值不一致,致使插入时与本来已存在的产生冲突的错误。

主要检测时和插入时两次计算的因此输不一致就会报错。

extractvalue报错注入

  1. ExtractValue(xml_frag, xpath_expr)
  2. ExtractValue()接受两个字符串参数,
  3. 一个XML标记片断 xml_frag
  4. 一个XPath表达式 xpath_expr(也称为 定位器);
  5. 第一个参数能够传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径

原理

若是Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来得到咱们想要知道的内容。

updatexml报错注入

首先了解下updatexml()函数

UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,若是不了解Xpath语法,能够在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据 函数做用:改变文档中符合条件的节点的值

原理

若是XPath_string的值不符合xpath的语法格式则会报错,报错信息会提示这个数据错误

因此咱们就在这个参数里注入咱们的返回数据结果

 

attachments-2020-03-DTsfN8eI5e7c422eed100.jpg

相关文章
相关标签/搜索