初次实战SQL注入

目录

1.判断漏洞是否存在

2.判断注入类型(数字型/字符型)

3.猜列数

4.联合查询判断回显位

6.获取数据库表明


此实验为本人学习内容,从未攻击任何网站!!!请伙伴们同样遵纪守法!!!

环境:虚拟机win10

靶场:dvwa

1.判断漏洞是否存在

根据客户端返回的结果来判断提交的测试语句是否成功被数据库引擎执行,如果测试语句被执行了,说明存在注入漏洞。
一般利用单引号( ' )或者双引号( " )来判断是否存在漏洞,如果出现SQL 语句错误说明有很大的可能会存在漏洞。
将dvwa靶场难度调为low
进入sql注入
第一步看到User ID可以先尝试输入数字,我尝试输入的1
第二步使用HackBar插件,点击LoadURL,就会在右方输入框内看到url
第三步点击Spit URL,方便查看
第四步在id=1后输入'或",查看是否报错 (因为sql语句中单引号或双引号都是成双成对,我们在这里输入单引号或者双引号后如果报错,很大可能存在此漏洞)
第五步点击Execute
可以看到报错信息里多出一个单引号,那么很大可能存在sql注入漏洞
我们可以查看数据库日志,进一步印证这一点(日志文件需要自行添加)
添加日志文件
添加
general_log = 1
general_log_file = "D:\phpStudy\PHPTutorial\MySQL\data\mysql.log"
回到添加路径下新建mysql.log即可
我们可以看到日志文件中我们在网页中做出的修改,一开始输入了1,第二次输入了1',可以看到这两句实际上就是sql查找语句(因为是学习阶段我们可以查看数据库日志文件来验证我们的想法)
第二次多输入一个单引号可以从语句中看出多了一个单引号,所以会报错
得出结论我们可以通过这里修改数据库从而得到更多有用信息

2.判断注入类型(数字型/字符型)

判断注入类型是 数字型 还是 字符型 ,这涉及到在注入的过程中是否 需要添加单引号,可以使用and ( 逻辑与)进行判断,当条件表 达式两边都为真才是真,有一边为假则是假
1 and 1=1
1 and 1=2
如果输入 1 and 1=1 1 and 1=2 页面的查询结果都返回相同的内 容,说明不是数字型注入。既然不是数字型,那就有很大的可能是 字符型注入了。
如果是字符型则需要对单引号( ' )进行闭合,因为 MySQL 中的引号 都是成双成对出现的。
输入以后可以看到 1 and 1=1, 1 and 1=2都能正常显示,这说明什么呢?说明这里不是数字型,数字型肯定会报错,很有可能是字符型
可以观察日志文件
既然已经判断不是数字型,我们就来验证一下是不是字符型
我们输入1' and 1=2--+,发现没有正常显示因为结果为假
(--+是注释的意思在数据库中注释为-- (有个空格),在url中会将+编码为空格)
我们输入--+是为了注释掉数据库中原本自带的单引号,让前面自带的单引号和我们输入 的单引号组成一对
我们再次查看日志文件
为了进一步验证,我们输入1' and 1=1--+
发现正常显示,这就形成了单引号闭合,符合字符型
我们可以在数据库中对比一下
首先是数字型,数字型正常来说是这两种结果,而在靶场中则是显示为相同的结果,原因是数据库将我们输入的1 and 1=1和1 and 1=2看做成'1 and 1=1'和'1 and 1=2',因为是字符型所以会自动的将我们输入的数据看成一体。
而我们后来输入的1' and 1=1--+和1' and 1=2--+,因为我们在末尾都输入了注释符将字符型它本身的后单引号给注释掉了所以会呈现两种状态。
这里还涉及到隐式类型转换
'1 and 1=1'和'1 and 1=2'是两个字符串从被单引号引起来就能看出这一点,
'1 and 1=1'会从左往右读首先是1然后空格后面就不会再读取了,就等价于1,如同c语言中strlen()函数计算字符串长度时遇到\0就会结束。
我们知道这里是单引号闭合以后可以开始下一步猜列数

3.猜列数

查看日志文件就明白了
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 10 -- '
这条查询语句的意思是查询user_id=1,first_name, last_name这两列里的信息然后进行排序(order by)
这条查询语句中只选择了first_name, last_name这两列,所以我们根据列来查询只能是2,在实战中没有日志文件我们可以不断缩小列数来查询

4.联合查询判断回显位

这里我就不解释数据库查询语句了,不懂的伙伴可以学习一下数据库增删改查的知识

dvwa靶场中正常显示了两行但很多网站可能只会显示上面一行的内容不会显示我们输入的1,2

怎么解决呢我们输入id=-1' union select 1,2  --+,让id=-1,这样数据可在查询的时候发现没有匹配的就不会显示,则直接显示我们输入的查询

这好似我在数据库中演示的结果这样很好理解
确定回显位后我们则可以根据联合查询得到更多信息
如union select database(),version(),可以查询数据库名称和版本号

6.获取数据库表明

可以看到我们通过联合查询语句查出了dvwa数据库的两个表名

还是同样的问题,很多网站只会显示一条内容,这里我们的解决方法是group_concat()函数
第二种方式-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='dvwa' )%23
我们将查询标明的语句卸载括号里让他成为一条完整的查询语句这样对我们新手更加友好
查到表名后我们就要进一步查询表的字段了,这里我们查询users表的字段     %23也代表注释
-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users' )%23
最后就可以去具体的数据了比如查询user字段的数据
-1' union select 1,(select group_concat(user) from users )%23
这样我们就查出了所有的用户名
接下来我们查询user 和 password
显示在一行唯一的缺陷就是会将所有数据写在一起,需要自己根据前面查出的用户来对照
这里的密码是经过加密的可以通过解密工具解密
#group_concat() 函数被过滤时,可以使用 limit n,1 来逐个输出查询内容

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

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

相关文章

一个复杂的数据流转换:文件流转base64

一个复杂的数据流转换:文件流转base64 可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,又能如此精彩地讲述自己是如何衰老的。这样的老人在乡间实在是 难以遇上,也许是困苦的生活损坏了他们的记忆&#xff0…

线程池知识点总结

线程池 池化思想:线程池、字符串常量池、数据库连接池 提高资源的利用率 手动创建线程执行任务执行完毕、释放对象 预先创建多个线程对象,放入缓冲池中 优点: 提高线程的利用率提高程序响应速度(因为线程对象是提前创建好的…

内存溢出(OOM)-汇总指南

目录 java.lang.OutOfMemoryError:Java heap space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:GC overhead limit exceeded 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Permgen space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Metas…

(vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)

(vue)el-checkbox 实现展示区分 label 和 value&#xff08;展示值与选中获取值需不同&#xff09; 后端数据 解决方法 在 el-checkbox 标签中间传入要展示的文本即可&#xff0c;代码如下&#xff1a; <el-checkbox-groupv-model"formInline.processFieldList"…

总线要点笔记

1. AXI/AHB/APB差异 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced System Bus) 高级系统总线 APB (Advanced Peripheral Bus) 高级外围总线 AXI (Advanced eXtensible Interface) …

公众号运营的基本流程分享,纯干货!

公众号运营是一个系统工程&#xff0c;需要运营者从定位与策划、内容创作、引流与互动三个方面进行精心设计和执行。如何运营好一个公众号&#xff0c;实现高质量的内容输出和有效的用户互动&#xff0c;是许多企业面临的挑战。 本文伯乐网络传媒为您详细解析公众号运营的基本流…

前端学习之HTML(第二天)--多媒体标签和表格标签

注&#xff1a;里面的注释是对各个标签的解释 多媒体标签 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title> </head> <body> <!-- audio是音频可以填写绝对路径也可填写相对路径 --> &l…

MySQL学习笔记5: MySQL表的增删查改 (进阶)

目录 前言1. 数据库约束1.1. 约束类型not null 约束unique 唯一约束default 默认值约束primary key 主键约束foreign key 外键约束 2. 表的设计2.1. 实体之间的关系一对一一对多多对多 3. 新增4. 查询4.1. 聚合查询4.1.1. 聚合函数4.1.2. group by 子句4.1.3. having 4.2. 联合…

跨境知识分享:什么是动态IP?和静态IP有什么区别?

对于我们跨境人来说&#xff0c;清楚地了解IP地址、代理IP等这些基础知识&#xff0c;并学会正确地使用IP地址对于保障店铺的安全性和稳定性至关重要&#xff0c;尤其是理解动态IP和静态IP之间的区别&#xff0c;以及如何利用这些知识来防止账号关联&#xff0c;对于每个电商卖…

【STM32+OPENMV】二维云台颜色识别及追踪

一、准备工作 有关OPENMV最大色块追踪及与STM32通信内容&#xff0c;详情见【STM32HAL】与OpenMV通信 有关七针OLED屏显示内容&#xff0c;详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具 1、芯片&#xff1a;STM32F407ZGT6 2、CUBEMX配置软件 3、KEIL5 4…

上位机图像处理和嵌入式模块部署(qmacvisual入门)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然我们前面学习了很多的知识点&#xff0c;比如说在windows这边&#xff0c;用qt写界面&#xff0c;用opencv写图像处理代码&#xff1b;在linux…

cuda python torch 虚拟环境配置

以下是Pytorch和CUDA对应的版本 以下是Pytorch和Python对应的版本 检查cuda与Python版本是否匹配 import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.empty(3,4,devicecuda))cuda 删除cuda conda uninstall cudatoolkit --forceconda u…

支付宝小程序模板开发,实现代小程序备案申请

大家好&#xff0c;我是小悟 支付宝小程序备案整体流程总共分为五个环节&#xff1a;备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前&#xff0c;需要确保小程序基本信息已填写完成、小程序至少存在一…

Docker入门——安装部署(openEuler)、镜像加速

安装 1&#xff09;依赖的基础环境 64 位CPU Linux kernel(内核) 3.10 Linux kernel cgroups and namespaces 我用的是openEuler&#xff0c;所以直接yum安装(推荐&#xff0c;因为二进制安装&#xff0c;docker命令中补全操作要另外安装软件) [rootlocalhost ~]# yum -y…

【AIGC调研系列】DevOps过程中依靠AIGC提升效率的具体实例

在DevOps过程中利用AIGC提升效率的具体实例包括&#xff1a; 智能排查流水线错误&#xff1a;云效工程师们与阿里云通义大模型合作&#xff0c;通过基于AIGC的工具辅助流水线错误排查&#xff0c;提高了DevOps流水线运行的效率和准确性[5]。自动化编程提高研发效率&#xff1a…

「经验」在博途中 是否可以在 LAD与STL 语言之间进行切换

用惯了STEP7&#xff0c;准确来说是SIMATIC Manager进行编程开发的同学&#xff0c;在转战TIA portal后&#xff0c;通常会经历一段“晦涩”的过度期&#xff0c;包括指令库的微小变动、工作界面的大改等等。 又比如&#xff1a;“在博途中&#xff0c;怎么快速切换LAD与STL语…

NVMe管理命令为何不用SGL?-2

在IO数据传输中&#xff0c;是否选择SGL可以根据自身场景的需要。SGL提供的是一种高效且灵活的方式来描述非连续的内存区域&#xff0c;这对于现代高性能存储系统至关重要&#xff0c;尤其是在处理大数据块或者随机小I/O操作时具有明显优势&#xff1a; 高效的数据传输&#xf…

课题学习(二十)----阅读《近钻头井斜动态测量重力加速度信号提取方法研究》论文

摘要&#xff1a;利用加速度计进行近钻头井斜动态测量时&#xff0c; 钻具的高速旋转、 井下强振动、强冲击环境给重力加速度测量带来极大干扰&#xff0c;如何从干扰噪声中有效提取重力加速度信号对于提高井斜角和工具面角的测量精度至关重要。 根据重力加速度径向和切向分量为…

Altium Designer 22 性能优化

目录 AD22 使用起来很卡&#xff0c;完全受不了&#xff0c;卡到我的快捷鼠标宏都无法使用&#xff0c;来试着优化一下它。 每点完一步&#xff0c;都需要点击应用&#xff0c;否则不下心关掉了会很难受 打开右上角齿轮进入设置&#xff0c;取消勾选这几个勾&#xff1a; 接…

java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext&#xff0c;读取xml文件并且创建bean public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(confi…