sql-inject漏洞盲注

基于真假的盲注
注入原理:页面只会反馈真和假两种情况,但我们可以通过不停的猜,碰撞出一些有效的信息,这就是基于真假的盲注。
判断是否存在基于真假的盲注:
1.输入单引号结果:
在这里插入图片描述
2.输入一个正确的用户名后面跟着一个 and 1=2#,得到:
在这里插入图片描述
3.输入正确的用户名后面跟着 and 1# 得到:
在这里插入图片描述
以上说明了我们输入的sql语句还是被拼接到数据库中被执行了的,只是页面返回只返回一种错误,就是作了错误的标准化处理。但是我们可以不断地猜,碰撞出有效的信息,所以,这里还是还是存在sql盲注的漏洞的。

因为要判断真假,所以我们需要对数据进行处理,用substr()函数把信息一个一个提取出来,再用ascii()函数对提取出来的信息进行ASCII化,例如:
select ascii(substr(database(),1,1)); 在数据库中得到:
在这里插入图片描述
再根据ASCII代码表得出109对应的是字母 m,在bp中,我们可以这样做:
在这里插入图片描述
上图就是把页面抓到的包发送到intruder,然后把name后边的数据改一下,再把x设定为暴力破解的变量,然后在0到127之间把它的值跑出来,还有这里的name是URL格式的,记得转换。
最后得到:
在这里插入图片描述
发现payload这里长度不一样,进去包里边发现:
在这里插入图片描述
第一个信息对应的ASCII代码为112,就是p。
哦,对了,还要知道你想要知道的信息的长度,可以用length()函数,比如上面数据库的名字长度:
kobe’ and length(database())=x#
这里建议手动,比如把等于改成大于或者小于,把x改成你猜的数,一步一步猜出来,因为数据库名字一般不会太长,所以手动会简单和快捷一些。


基于时间的盲注
原理:本质是基于真假的盲注的改进版,这里不是通过页面返回的信息判断真假,而是自己写一个sleep函数在我们构造的sql语句后边,如果延时了,那么为真,否则为假。(如果这里没有理解就先看下面的测试方法再看原理)
测试方法:输入口输入sleep()函数,该函数的意思是延迟代码执行若干秒,比如sleep(10)意思就是让它延时10秒在执行,我们可以通过它是否执行了此函数来判断这里是否存在基于时间的盲注。
通过页面查看sleep是否生效的步骤:
1.打开网页的菜单,找到web开发者。
在这里插入图片描述
2.点击网络。
在这里插入图片描述
3.点击重新载入。
在这里插入图片描述
4.输入相对应的语句:
x’ and sleep(10)#
在这里插入图片描述

上面那个图是错的,因为1049ms是一秒,在这里该语句并未被执行,为什么?
因为and 前边的语句为假,所以后边的语句就不会被执行,所以正确的在这里:

在这里插入图片描述
右下角(5035=4s+1s,至于为什么会多出十几毫秒来,这位大佬给出了答案:https://blog.csdn.net/qq_20161893/article/details/72770193
)说明sleep()函数确实执行了,所以这里存在基于时间的盲注。

注入的具体语句:
这里介绍两种语句,一种是视屏里老师用的,还有一种是我根据经验自己创造的(我的可能会有什么缺陷,所以不建议用,要是有大佬看到,并且告诉我缺陷,不胜感激,或者我的道行深了,我会自己回来改。)
建议的:
kobe’ and if((substr(database(),1,1))=‘p’,sleep(10),null)#
我自创的:
kobe’ and substr(database(),1,1)=‘p’ and sleep(10)#(我试过了,页面确实延时了,如图:)
在这里插入图片描述


如果有大佬能指正错误,不胜感激!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值