sqli-labs中的sql注入类型

         sql注入

sqli-labs1 联合查询

sqli-labs5 布尔盲注       

sqli-labs9 时间盲注 


sql注入

        当前后端存在数据库交互时,在前端通过拼接字符串来构造出sql语句,传到后端能让服务器成功执行的行为叫做sql注入。

         sql注入的类型有很多,按注入点类型可以分为字符型、数字型等等;按利用方式又可以分为联合查询注入、报错注入、布尔盲注、时间盲注等等;按传参方式又可以分为GET注入、POST注入、HTTP头部注入等等。本文将通过sqli-labs的各个关卡的演示来解释不同注入类型的不同利用手法。

sqli-labs1 联合查询

        在页面分别输入?id=1和?id=2能看到页面返回的结果是不同的,说明这里可能存在注入点  。     

        输入1'发现页面会有MySQL报错,基本确认存在注入点。

       1' and '1' = '1 判断出是字符型注入(判断数字型可以通过写一个运算式如id=3-1,通过观察其是否回显id=2的页面来判断是否为数字型)。

         通过报错信息使用注释将注入点闭合

        order by 试出有3个字段(order by 能确认当前表有几个字段,当输入4时报错了,说明有3个字段)。

        select 1,2,3 发现只有2和3是回显的,所以后面可以利用2,3字段来回显自己想查询的结果,这里必须让前面的id值无法查询到,否则只会返回前面的值。

        利用union查询当前数据库的名称为'security'

        利用information_schema数据库来查看当前数据库有哪些表,group_concat函数的作用是将查询到的结果以逗号分隔的形式一行输出,这是因为当前页面只能回显一行,而sql查询是按列表的形式输出查询结果,会导致只能输出第一行的数据。

        接着查询出字段

        最后查询username和password字段拿到这个表的数据

sqli-labs5 布尔盲注       

        同样寻找注入点,发现输入不同的id值返回的页面都是“you are in” 。

         但是经过尝试发现输入一个无法查询到的值时,页面不回返回任何东西,也就是说只有后台数据库能查询到该数据时才会返回一个“you are in”  。

         当出现页面只有是与否两种回显情况时,我们就可以利用布尔盲注。首先还是确定好注入类型和找到闭合方式      。  

        这条语句的意思是判断当前数据库长度是否为8,length函数能返回字符串的长度,用and连接即可通过页面是否回显来判断长度是否猜对,当and两边的条件同时为真时,页面才会回显。

        substr函数的作用是截取字符串,这里表示截取当前数据库的第1个字符开始截取1位 ,ascii函数能返回第一位字符串的ascii码,这条语句的意思就是对当前数据库的第一个字符进行猜测,是否为115,115在ascii码表对应的是s,也就是通过改变截取位置和ascii码来猜出当前数据库的名称      。  

        因为布尔盲注耗时长,所以一般不用于手工注入,这里仅对其原理做一个解释。

sqli-labs9 时间盲注 

        这关我们发现不管我们输入什么,都返回同样的页面,所以布尔盲注就不再适用于此关了,但是我们可以尝试使用时间盲注看看有没有效果     

        首先时间盲注的原理和布尔盲注差不多,只是时间盲注多了一个if判断语句,当查询的结果成立时,用利用sleep函数让页面延迟加载,从而判断你的猜测是否为真。

         但是上面返回页面时并没有延迟5秒,可能是注入类型的原因,尝试字符型注入,将id值替换为id=1',再次执行发现页面延迟了5秒返回 ,说明这里存在时间盲注。  

        接下来就是利用ascii函数猜测数据库的名称,后续操作和手法和第5关布尔盲注类似。只是多了if判断和sleep函数。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值