首页 > 其他分享 >堆叠注入笔记

堆叠注入笔记

时间:2023-09-16 11:33:06浏览次数:43  
标签:语句 笔记 堆叠 result sql mysqli 注入

1 堆叠注入  

1.1 堆叠注入成因

Sql查询语句中, 分号“;”代表查询语句的结束,所以在执行sql语句结尾分号的后面,再加一条sql语句,这个语句会一起执行,造成注入,这就是堆叠注入(Stacked Injection)。堆叠注入在mysql数据库中并不常见,常见于mssql数据库,mssql数据库是默认堆叠注入的。如用户输入:1; DELETE FROM products

服务器端生成的sql语句为:Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

1.2 堆叠注入触发条件

堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句,这就需要服务器在访问数据端时,使用的是可同时执行多条sql语句的方法,例如php中的mysqli_multi_query函数。但与之相对应的mysqli_query()函数一次只能执行一条sql语句,所以要想目标存在堆叠注入,在目标主机没有对堆叠注入进行黑名单过滤的情况下必须存在类似于mysqli_multi_query()这样的函数。总结就是:

1、目标存在sql注入漏洞

2、目标未对";"号进行过滤

3、目标中间层查询数据库信息时可同时执行多条sql语句

因此,堆叠注入存在局限性:堆叠注入并不是在每种情况下都能使用的。大多数时候,因为API或数据库引擎的不支持,堆叠注入都无法实现。堆叠注入通常无错误回显,堆叠注入第二个语句产生错误或者结果只能被忽略。因此,在读取数据时,建议使用union(联合)注入。同时在使用堆叠注入之前,也需要知道一些数据库相关信息的,例如表名,列名等信息。

2 堆叠注入案例  

2.1 强网杯19年随便注 - BUUCTF靶场可测

还记得我们先前总结的测试流程吗?

首先,上万能payload, 单引号。

输入1’ 页面报错了,加上注释符号#页面又回显正常,那么闭合符号就是单引号。

堆叠注入笔记_mysql

过滤了很多函数和关键字。

尝试堆叠注入:1'; show databases;#

堆叠注入笔记_sql注入_02

发现成功,爆出了有用的信息。

后续解题思路参考后文链接。我们浅尝则止,旨在突出堆叠注入的特点和使用场景。

2.2 Sqli-lab Less-38 堆叠注入 - 字符型 - GET

传入单引号报错,发现错误回显分析后构造单引号闭合发现字符型注入

?id=1' and '1'='1
?id=1' and '1'='2

经过测试存在union联合注入,使用联合注入爆破出users表中有id、username、password三个 字段。

于是尝试堆叠注入将id为1的用户密码改成123,可以配合联合查询来判断sql是否执行。

http://127.0.0.1/sqli-labs-master/Less-38/?id=-1' union select 1,2,3;

update%20users%20set%20password=123%20where%20id=1--+

再次查询时发现已经更改,打开php源代码看一下是什么:

if (mysqli_multi_query($con1, $sql))
{
    /* store first result set */
    if ($result = mysqli_store_result($con1))
    {
        if($row = mysqli_fetch_row($result))
        {
            echo '<font size = "5" color= "#00FF00">';  
            printf("Your Username is : %s", $row[1]);
            echo "<br>";
            printf("Your Password is : %s", $row[2]);
            echo "<br>";
            echo "</font>";
        }
//            mysqli_free_result($result);
    }

可以看到有这个函数:mysqli_multi_query。

3 总结

堆叠注入其实很好理解,但是它的应用场景比较局限,只需要知道注意多个sql语句同时执行这种情况可能存在注入就行。

标签:语句,笔记,堆叠,result,sql,mysqli,注入
From: https://blog.51cto.com/u_14881360/7491913

相关文章

  • 《LINUX设备驱动程序》学习笔记 ——03
    1.学习模块前的一些基础知识头文件:内核是一个特定的环境,对需要和它接口的代码有其自己的一些要求,所以大部分的模块代码中都会包含相当数量的头文件,其中有几个头文件是专门用于模块的,因此会出现在每个可装载的模块中:#include<linux/module.h>#include<linux/init.h>......
  • 第二周学习笔记
    I/O数据库的使用一、I/O数据库与系统调用系统调用函数:open()、read()、write()、lseek()、close()I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()I/O库函数例系统调用例两者区别:IO库函数提供了更高级别的接口和抽象,使得输入和输出操作更加方便和易用,而系统函......
  • 集合不相等容斥 笔记
    学习自zhouyuhang老师的ABC236Ex题解。其实就是完善了一下zhouyuhang老师没写的一些简单部分。我们先从一个经典的容斥理解:正难则反,我们钦定\(S\)内部全部相等,那么容斥系数是\((-1)^{|S|}\),于是答案就是\(\sum\limits_{S}(-1)^{|S|}f(S)\)。注意到这个集合不相等容斥......
  • 第二周学习笔记
    I/O数据库的使用一、I/O数据库与系统调用系统调用函数:open()、read()、write()、lseek()、close()I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()I/O库函数例系统调用例两者区别:IO库函数提供了更高级别的接口和抽象,使得输入和输出操作更加方便和易用,而系统函......
  • 《LINUX设备驱动程序》学习笔记 ——02
    1.编译模块构造内核模块之前,需要注意以下条件:正确版本的编译器、模块工具和其他必要的工具。太新的或太老的工具都会对使得模块构造后产生许多复杂的问题,因为内核源代码对编译器做了大量假定,因此新的(或旧的)编译器版本可能导致问题出现。另外,尽量运行和模块对应的内核版......
  • 【学习笔记】(26) cdq 分治 与 整体二分
    cdq分治基本思想我们要解决一系列问题,这些问题一般包含修改和查询操作,可以把这些问题排成一个序列,用一个区间[L,R]表示。分。递归处理左边区间\([L,M]\)和右边区间\([M+1,R]\)的问题。治。合并两个子问题,同时考虑到\([L,M]\)内的修改对\([M+1,R]\)内的查询产生的影......
  • 情感智商读书笔记2,关于移情
    移情其实就是共情,就是体会别人处境和感受的能力。在生活中,比如可以体会别人的悲伤、困境并感同深受。缺少移情能力,可能会没有融洽的人际关系,也可能增加犯罪率。为什么有的人移情能力高,有的人不足呢。有种说法是幼儿时期的照料者理论。如果一个小孩在幼儿时啼哭时,照顾的大人能够关注......
  • openGauss学习笔记-70 openGauss 数据库管理-创建和管理普通表-查看表数据
    openGauss学习笔记-70openGauss数据库管理-创建和管理普通表-查看表数据70.1查询数据库所有表的信息使用系统表pg_tables查询数据库所有表的信息openGauss=#SELECT*FROMpg_tables;70.2查询表的属性使用gsql的\d+命令查询表的属性openGauss=#\d+customer_t1;70.3......
  • 《Java编程思想第四版》学习笔记28
    //:PrintFile.java//Shorthandclassforopeninganoutputfile//forhuman-readableoutput.packagecom.bruceeckel.tools;importjava.io.*;publicclassPrintFileextendsPrintStream{publicPrintFile(Stringfilename)throwsIOException{super(n......
  • Linux(CentOS7)学习笔记
    目录Linux笔记第零章计算机概论第一章Linux是什么与如何学习第二章主机规划与磁盘分区2.1.Linux与硬件的搭配2.2.磁盘分区第三章安装CentOS7.x3.1.本练习机的规划——尤其是分区参数3.2.开始安装CentOS7第四章首次登录与线上求助4.1.首次登陆系统4.2.文字模式下指令的下达......