SQL注入原理 - 基于时间的盲注

基于时间的盲注原理


一、为什么使用延时注入

1、部分网站没办法 union select 联合查询方式注入   2、部分网站没有输出显示,只能通过延时判断;


二、SQL语句原理:

1、sleep(n) 语句:使数据库在暂停n秒之后再将搜索结果输出;

2、if((条件),m,n)语句:若条件为真 返回m,若条件为假 返回n;

SQL注入原理 - 基于时间的盲注_第1张图片


3、length(database())语句:返回当前数据库名长度

将其与sleep - if语句结合:

select thisdate from bbsmember where id = "1" and sleep(if((length(database())=4),0, 3));

SQL注入原理 - 基于时间的盲注_第2张图片

体现在网页中就是,当你猜中数据库长度,网页加载时间出现变化;


4、mid(database(),m,n):返回数据库名的第m位之后的n位;

SQL注入原理 - 基于时间的盲注_第3张图片

将其与sleep - if语句结合:

select thisdate from bbsmember where id = "1" and sleep(if((mid(database(),1,1)="s"),5,0));


体现在网页中就是当你猜中了数据库名的第1位,网页加载时间变长为5s;

这种直接等于的方式导致了需要比对的次数非常多;我们可以使用ORD(字符)来将mid语句返回的字符转换为ASCII码,因为都是数字,可以通过范围判断提高效率;



你可能感兴趣的:(SQL注入原理 - 基于时间的盲注)