初次实战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.rhkb.cn/news/270151.html

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

相关文章

24计算机考研深大经验分享(计算机专业考研综合安排)

文章目录 背景科目选择高数选课一轮二轮冲刺阶段 线代一轮二轮 概率论计算机学科专业基础408数据结构计算机组成原理操作系统计算机网络总结 英语政治 末言 背景 首先贴一下初试成绩。这篇分享主要是给零基础的同学使用的,基础好的同学可以自行了解补充一下&#xf…

CTP-API开发系列之柜台系统简介

CTP-API开发系列之柜台系统简介 CTP-API开发系列之柜台系统简介中国金融市场结构---交易所柜台系统通用柜台系统极速柜台系统主席与次席 CTP柜台系统CTP组件名称对照表CTP柜台系统程序包CTP柜台系统架构图 CTP-API开发系列之柜台系统简介 中国金融市场结构—交易所 我们知道提…

【Flink入门修炼】2-2 Flink State 状态

什么是状态?状态有什么作用?如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢?又如何做故障恢复呢? 一、为什么要管理状态 流计算不像批计算,数据是持续流入的,而不是…

网络编程(3/4)

广播 ​ #include<myhead.h>int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET, SOCK_DGRAM, 0);if(sfd -1){perror("socket error");return -1;}//2、将套接字设置成允许广播int broadcast 1;if(setsockopt(sfd, SOL_SOC…

javascript基础入门

1.第一个javascript程序 javascript程序不能够独立的运行&#xff0c;必须依赖于HTML文件&#xff0c;type属性值用来说明脚本的类型&#xff0c;这里 是指使用javascript编写的文本文件&#xff1b; 2.alert警告框 alert&#xff08;&#xff09;函数显示一条指定的信息&am…

Vue router文件中本地路由配置使用i18n【解决tab名称出现undefined,导致i18n没有实现问题】

问题 点击按钮 跳转详情页后 tab名称出现错误&#xff0c;报 undefined ## 需求 点击工单详情按钮&#xff0c;跳转详情页面&#xff08;新页面&#xff09;&#xff0c;新页面tab栏名称 还是为 工单出库&#xff0c;但要求工单出库文字配置为多语言&#xff0c;使用i18n来配置…

[云原生] K8s之pod控制器详解

Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。 Pod 控制器由 master 的 kube-controller-manager 组件提供&#xff0c;常见的此类控制器有 Replication Controller、ReplicaSet、Deployment、…

SQOOP安装与使用

SQOOP安装及使用 文章目录 SQOOP安装及使用SQOOP安装1、上传并解压2、修改配置文件3、修改环境变量4、添加MySQL连接驱动5、测试 准备MySQL数据登录MySQL数据库创建student数据库切换数据库并导入数据另外一种导入数据的方式使用Navicat运行SQL文件导出MySQL数据库 importMySQL…

购买使用静态住宅代理IP前,你需要测试的5件事

静态住宅代理IP&#xff0c;是一种在网络通信过程中提供固定IP地址的代理服务。与动态代理IP相比&#xff0c;静态代理IP提供的是持久且不变的IP地址。这种稳定性使得静态代理IP在需要长期稳定网络身份的场景中&#xff0c;如跨境电商/社媒养号、网络监控、品牌保护、长期数据爬…

安卓使用ExoPlayer出现膨胀类异常

1.导包 implementation com.google.android.exoplayer:exoplayer-core:2.15.1implementation com.google.android.exoplayer:exoplayer-ui:2.15.1 2.在Androidifest.xml加入权限&#xff0c;我这里加了网络与读写权限 <uses-permission android:name"android.permissio…

windows中使用nnUNet的nnUNet_convert_decathlon_task提示路径不对

找到问题并且解决解决办法 报错时候的指令 nnUNet_convert_decathlon_task -i D:\桌面\nnUNet\DATASET\nnUNet_raw\nnUNet_raw_data\Task05_Prostate 修改为 nnUNet_convert_decathlon_task -i D:/桌面/nnUNet/DATASET/nnUNet_raw/nnUNet_raw_data/Task05_Prostate 修改点&…

H5双人五子棋小游戏

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html> <…

移动开发:网格视图

一、在新建GridView模块下添加图片以及创建cell.xml文件 1.粘贴图片时选择红框中的路径&#xff0c;点击“OK” 2.在路径后添加-mdpi后缀,再点击“OK” 二、相关代码块 1.MainActivity.java文件代码 package com.example.gridview;import androidx.appcompat.app.AppCompatAc…

备考2024年北京高考数学:20114~2023十年选择题练习和解析

距离2024年高考还有三个月的时间&#xff0c;如何用三个月的时间再提高北京数学高考的成绩&#xff1f;吃透历年真题以及背后的知识点是行之有效的方法 之一。 今天我们来看一下2014-2023年的北京市高考数学的选择题&#xff0c;从过去十年&#xff08;2014-2023&#xff09;的…

面试问答总结之并发编程

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;多线程的优点、缺点&#x1f415;并发编程的核心问题 &#xff1a;不可见性、乱序性、非原子性&#x1fa80;不可见性&#x1fa80;乱序性&am…

【真机Bug】异步加载资源未完成访问单例导致资源创建失败

1.错误表现描述 抽卡时&#xff0c;10抽展示界面为A。抽取内容可能是整卡或者碎片&#xff0c;抽到整卡&#xff0c;会有立绘展示和点击详情的按钮。点击详情后出现详情页B。【此时界面A预制体被销毁&#xff0c;卡片数据进入数据缓存池】点击页面B的返回按钮&#xff0c;单例…

刚刚,OpenAI官方发文驳斥马斯克,自曝8年间邮件往来截图

文章开篇表示&#xff1a;「OpenAI 的使命是确保 AGI 惠及全人类&#xff0c;这意味着既要构建安全、有益的 AGI&#xff0c;又要帮助创造广泛的利益。我们正在分享我们在实现使命方面所学到的知识&#xff0c;以及有关我们与马斯克关系的一些事实。我们打算驳回马斯克的所有主…

回归啦!!!

消失的日子在实习&#xff0c;今天最后一天了来看看自己的学习日志&#xff0c;有没有可以和小伙伴交流的部分吧&#xff01; 目录 一、产品one ①简介 ②底层原理 ③知识点一 作用一&#xff1a;日志采集 作用二&#xff1a;实时监测 作用三&#xff1a;规则匹配 作用…

Word中Endnote加载项不见了怎么处理?

打开word-①文件-②选项-③加载项 勾选endnote cite while you write 完成上述操作后&#xff0c;endnote便出现在菜单栏中。

[C语言]——分支和循环(2)

目录 一.逻辑操作符&#xff1a;&& , || , &#xff01; 1.逻辑取反运算符! 2.与运算符&& 3.或运算符 4.练习&#xff1a;闰年的判断 5.短路 二.switch语句 1.if语句和switch语句的对比 2.switch语句中的break 3.switch语句中的default 4.switch…