我们来继续SQL
注入的学习,第一次的笔记我们学习的是SQL union
联合注入和报错注入,这两种注入都有明显的数据回显。也就是说,我们通过注入让数据库的信息回显在页面中。在真实的渗透过程中,有时候我们碰到的网站常常不会输出这些信息,而遇到这种不回显的页面,我们又怎么进行SQL
注入呢?
这次笔记的介绍的就是两种不回显的SQL
注入,布尔注入与时间注入。
布尔注入
布尔值就是用于判断真和假的一个逻辑变量,布尔注入,顾名思义,就是通过返回页面的真假识别我们SQL
注入语句的正确性。
a. 应用场景
布尔注入的应用首先要求页面存在SQL
注入漏洞,但是注入条件比union
注入更苛刻一些,因为页面不会回显数据,也不会回显错误信息。
页面会返回True
或者False
,来帮助我们判断我们注入的SQL
语句判断是否正确。
当然,所谓的True
或者Flase
,并非就真的是直接返回真和假,是正常的页面和非正常的页面,下面会通过sqli-labs-master
靶场的注入来详细说明。
b. 布尔盲注方法
left() # 注入语句:left((select database()),1)>'s' # 函数说明:left(a,b)从左侧截取a的前b位 regexp # 注入语句 select user() regexp '^r' # 函数说明:正则表达式的用法,regexp为匹配user()的正则表达式 like # 注入语句:select user() like 'ro%' # 函数说明:与regexp类似,使用like进行匹配 substr() # 注入语句:ascii(substr((select database()),1,1))=98 # 函数说明:substr(a,b,c)从b位置开始,截取字符串a的c长度,ascii()将某个字符串转换为ascii值 mid() # 注入语句:ord(mid((select database()),1,1))=114 # mid()的作用与substr()相似
c. 靶场演示
此次实验演示的靶场是sqli-labs-master
的第8关。
我们先来看看靶场环境的正常页面
http://localhost/sqli-labs-master/Less-8/?id=1
页面显示如下
然后加个引号,返回的就是错误页面
http://localhost/sqli-labs-master/Less-8/?id=1
<