盲注--理论知识

盲注的简单定义:

我们在查询过程中,页面只有两种情况:“true”和“false”,要么有,要么没有;查询表的记录和语句错误也不会显示。这种状况下的注入,称为盲注。

盲注的关键点:

根据页面返回内容分析payload中的问题是否为真,然后通过多次测试遍历出想要的结果

布尔盲注方法:

1、尝试是否存在注入漏洞:

注入语句:?id =1 and 1=1 和 id = 1 and 1=2

判断结果:如果两次返回的页面不同,那么就说明存在SQL注入漏洞

2、猜测数据库字长:

注入语句:?id=1 and (length(database()))>10

然后逐步增大或减小数值,这里可以使用二分法来判断,直到确定数据库名称大小

3、猜测数据库名称:

原理:在知道数据库的长度之后,我们可以尝试用盲猜的方式一个一个尝试数据库的字符是否正确,用的方法就是截取字符并且取ascii码值

注入语句:?id =1 and ascii(substr(database(),1,1))>100

我们可以一点一点的尝试,确定字符之后再一个一个的向下截取。

4、猜测数据库中的表数量:

注入语句:?id = 1 and (select count(table_name) from information_schema.tables where table_schema=database())=1;

将数字不断累加判断;

5、猜测数据库中的表数据:

利用相同的方法,猜测:

a)一个表中的第一个字符

b)字段长度

c)第一个字段全名

d)字段内容的条数

e)字段第一条的具体内容

时间盲注方法

原理:和布尔盲注基本一致,但是用的方式不太相同,这里是用的休眠这种方式,如果你想知道的payload正确(当然也可以设置成错误),那么就休眠

注入语句:?id =1 and if(length(database())=10,sleep(10),0);

相关函数:

length()函数:

length()函数的作用是返回字符串参数的长度,以字节为单位。一个多字节字符算作多字节

substr()函数:

从字符串的特定位置开始返回一个给定长度的子字符串

该有三个参数:str,pos,len

str代表要截取的字符串,pos代表从截取开始的位置,len表示字符串截取的长度即子字符串的长度

相似函数:mid()、substring()

ascii()函数:

返回某个字符的ascii码值,且该函数处理单个字符,如果是字符串则会处理第一个字符

sleep(n)函数:

将程序挂起一段时间,具体时间为参数n秒

if(condition,value_if_ture,value_if_false)函数:

判断函数,如果第一个参数为真则执行第二个参数,为假则执行第三个参数

相关术语

payload:

即有效载重。有效载重说明载重是有意义的;进而理解payload应该是一系列信息中的关键信息

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值