学习笔记-SQL盲注
盲注
在SQL注入过程中,SQL语句执行后,选择的数据不能回显到前端页面,此时需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面不同,也可能是响应时间不同))
一般盲注分为两种:基于布尔的盲注(Boolean based)基于时间的盲注(Time based)
基于布尔的盲注
页面的返回结果只有两种:对或错,通过构造SQL判断语句,查看页面的返回结果来判断哪些SQL判断条件成立,通过此来获取数据库中的信息
基于时间的盲注
使用具有延时功能的函数sleep,benchmark等,通过判断这些函数是否正常执行来获取数据库中的数据
SQL盲注常用函数
if():条件判断,例如:if(1=1,1,2) 返回为1
left():截取具有指定长度的字符串的左部分;
length():返回字符串的长度,以字节为单位;
substr(),substring():从指定的位置开始,截取字符串指定长度的子串;substr('abcs',3,1) 返回c
ascii(),ord():返回字符串最左边字符的ASCII码值;
cast(),convert():获取一个类型的值,并产生另一个类型的值;select cast(123.45,as signed) 返回123
二进制:binary 字符型:char() 日期:date() 时间:time()
日期时间型:datetime 浮点数:decimal 整数:signed 无符号整数:unsigned
延时函数:select sleep(N) ; benchmark():让某语句执行一定的次数,执行成功后返回0;