渗透之sql注入联合查询的注入

sql注入产生的原因:


        由于程序过滤不严谨,导致用户有一些异常输入,最终触发数据库的查询。所以会出现sql注入这个问题。有些恶意的人就会利用这些信息导致数据库泄露。

	注意:一般我们存在注入点我们会查询管理员的账号和密码;但是我们现在是在前端页面下的,我们并不知道管理员的数据在哪个数据库哪张表下的。(我们需要知道在哪个数据库,哪张表,哪个字段下;这个是前提)当我们发现一个注入点是首先将前置条件查询出来:1.mysql的版本号 	select version();2.mysql的权限(用户),如果当前为root那么入侵成功率就很高。  select user();3.当前所在的数据库问题1:你现在有普通用户的权限,查到了管理员的账号和密码:1.管理员的后台找不到 2.管理员的密码破解不了此时该怎么办?回答:挖掘存储型XSS

第一关实际操作:

1:前端输入                

        在这里我们搭建了一个sql注入的靶场,如下图所示,在web的前端页面中使用id来接受用户传递进来的值。将值传递给后端进行处理。

后端处理代码:如下图可知前端web页面输入的值由id传递给后端的sql代码中处理。

2:逃逸单引号

        我们这里就可以思考如何控制用户的输入触发数据的额外查询。要是传递进来的sql语句能够被执行就好了。但是传递进来的所有值都被单引号包裹,全部被变成了字符串,这是我们就要思考如何逃出单引号的包围。

当我们传递进来的不是1,而是1’  时:就会报错,报错的原因就是多了一个单引号,如下图:

       

        这里提示我们有语法错误,那么就意味着我们已经逃逸出了单引号,但是后面还有一个单引号所以会报错。此时我们需要闭合单引号。我们可以使用注释将后面的单引号注释掉:

我们这里的注入点为 1'  ,但是后面还有一个单引号,我们需要将后面的另一个单引号注释掉;
mysql中的三种注释方法:“-- ”:注意后面的空格在web的url中我们需要写为“+”,“--+”#/* */

如下图:并没有报错,说明我们找到了注入点并可以成功的闭合,我们就可以在此处插入sql注入。

我们查看后端页面:

3.使用联合查询进注入

爆破列数:

        使用联合查询需要有一个前置条件,两个表的列相同。我们怎么能够知道这个表有几列?

解决方法:

此时我们就需要一个函数 order by:
                        order by 是排序的意思,通常来说我们是通过字段来排序的,但是order by后面也可以以跟数字;
                        order by 1 :表示根据第一列来排序
                        order by 2 :表示根据第二列来排序

如下图,如果order by后面的数字大于真实的列数时就会报错:我们就可以查出列数:

在sql靶场中进行操作:

当order by  3时页面正常显示,当order  by 4时页面报错,说明我们当前所处的表有3列:

联合查询

我们前面已经知道这张表的列数了,所以这里写三个参数。

如上图,联合查询后还是没有任何变化,原因:

  • 原因:联合查询的条件是前面的条件为假,后面的联合查询才能为真,就意味着前面的已经查到了所以后面的就不执行了。此时我们需要使前面的条件为假,我们有两种方案:
            1:查一个不存在的id
            2:第二种使使用负号

如下图:当传递进来的id为负数,前面的为假,联合查询后面的为真。在name和password字段上就显示2,3。

这里我们发现,前端页面显示的是2,3字段,说明数据就出在这两个字段上。“1”也可以出数据但是没法在前端页面上显示。

此时可以就可以控制2,3字段的内容:

查数据库名,版本号,用户:

将2,3字段替换:查数据库和版本

此时我们就查出了数据库和数据库的版本:

查用户:

爆破表名:

既然已经知道注入点在2,3字段,我们从该字段下手。

之前我们知道自己的数据库名,叫做: security。那么现在我们需要知道本数据库下有哪些表。

此外我们知道数据库存在一个系统自带的数据库: information_schema ;其中包含表的信息。

我们就可以通过查询这个数据库中的信息吧当前数据库下的表全查出来:

注意:基本上mysql中都会存在information_schema这个系统自带的数据库。但是这个数据库只有root用户才能访问,由于我们上面已经查询到了当前的用户为root,所以我们就直接利用它。如果不是root用户还有其他的数据库可以替代它。

我们去查看information_schema数据库具体信息:其中叫tables表中有我们想要的信息,我们可以使用这张表查询我们想要的信息:

开始爆破表名:如下图就爆破出了当前数据库下的所有表名。

在下面几张表中最可能储存用户和密码信息的为users表。但是我们不知道该表的字段名,所以我们继续利用information_schema来爆破字段名。

id=-1%27%20union select 1,group_concat(table_name),3  from information_schema.tables   where table_schema="security"  --+

爆破列名:

在information_schema中,列名在:columns这张表中。

开始爆破表名:如下图就吧列名爆破出来了。

id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema="security" and table_name="columns"--+

爆破具体值:

因为我们现在知道表名以及字段名,我们就可以直接查询(users这张表在本数据库下面):

d=-1' union select 1,group_concat(username,0x3a,password),3 from users--+        

到此,我们成功的完成了一次注入!

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

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

相关文章

Q1季度家用健身器械行业线上市场销售数据分析

自疫情开始,全民健身的浪潮就持续至今。然而,水能载舟亦能覆舟,一边是不断释放的健身需求,另一边却是无数健身房的闭店潮。 越来越多人倾向于选择家用健身器械来运动或是直接选择无器械的健身运动,比如各类健身操。而…

【跟马少平老师学AI】-【神经网络是怎么实现的】(六)过拟合问题

一句话归纳: 1)过拟合问题: 图中的点为样本直线欠拟合曲线2过拟合 2)迭代次数与拟合情况: 训练次数过多可能导致过拟合。 3)正则化项法弱化过拟后问题: 加正则项,在最小化损失函数时…

电脑自带dll修复在哪里,使用dll修复工具解决dll问题

在我们日常与电脑相伴的工作与学习过程中,我们经常会遇到一些错误提示,其中最常见的就是“无法找到.dll”或“找不到.dll文件”。这种情况通常是由于dll文件丢失或损坏导致的。dll文件是动态链接库文件,它包含了许多程序运行所需的函数和资源…

场景文本检测识别学习 day06(Vi-Transformer论文精读、MAE论文阅读)

Vi-Transformer论文精读 在NLP领域,基于注意力的Transformer模型使用的非常广泛,但是在计算机视觉领域,注意力更多是和CNN一起使用,或者是单纯将CNN的卷积替换成注意力,但是整体的CNN 架构没有发生改变VIT说明&#x…

B树:原理、操作及应用

B树:原理、操作及应用 一、引言二、B树概述1. 定义与性质2. B树与磁盘I/O 三、B树的基本操作1. 搜索(B-TREE-SEARCH)2. 插入(B-TREE-INSERT)3. 删除(B-TREE-DELETE) 四、B树的C代码实现示例五、…

一文全面了解 wxWidgets 布局器(Sizers)

目录 Sizers背后的理念 共同特征 最小大小 边框 对齐方式 伸缩因子 使用 Sizer 隐藏控件 wxBoxSizer wxStaticBoxSizer wxGridSizer wxFlexGridSizer 布局器(Sizers),由wxWidgets类层次结构中的wxSizer类及其派生类表示&#xff0…

基于 Wireshark 分析 IP 协议

一、IP 协议 IP(Internet Protocol)协议是一种网络层协议,它用于在计算机网络中实现数据包的传输和路由。 IP协议的主要功能有: 1. 数据报格式:IP协议将待传输的数据分割成一个个数据包,每个数据包包含有…

android init进程启动流程

Android系统完整的启动流程 android 系统架构图 init进程的启动流程 init进程启动服务的顺序 bool Service::Start() {// Starting a service removes it from the disabled or reset state and// immediately takes it out of the restarting state if it was in there.flags_…

JAVA面试专题-微服务篇

Spring cloud Spring Cloud 5大组件有哪些 注册中心/配置中心:nacos 负载均衡:Ribbon 服务远程调用:Feign 服务保护:sentinel 服务网关:Gateway 微服务注册和发现 nacos和eureka的区别 负载均衡 微服务向Ribbon发送…

[1678]旅游景点信息Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 旅游景点信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql…

Word页脚设置“第X页共X页”的方法【域实现】

Word页脚设置“第X页共X页”的方法【域实现】 在设置Word页码格式的要求中,有时需要设置为“第X页共X页”这种格式,使用Word中的域功能可实现,同时,在某些情况下,可能还需要减去封面的页码,接下来为具体步…

软件标准建设体系规范过程性文档(软件开发,管理,安全,运维等各阶段全文档)

软件标准建设体系规范是确保软件开发过程标准化、高质量和可维护性的关键。它通常包括一系列文档、规范、流程和最佳实践,以确保软件项目的成功实施和交付。以下是一个软件标准建设体系规范的基本框架: 软件全套资料获取方式1:进主页。 获取…

C#描述-计算机视觉OpenCV(3):重映射

C#描述-计算机视觉OpenCV(3):重映射 前言色彩波形图像重映射 前言 C#描述-计算机视觉OpenCV(1):基础操作 C#描述-计算机视觉OpenCV(2):图像处理 在前文中,描…

【跟马少平老师学AI】-【神经网络是怎么实现的】(四)卷积神经网络

一句话归纳: 1)用1个小粒度的模式,逐个与图像的局部区域进行运算,运算结果反映模式与区域的匹配程度。 2)卷积神经网络与全连接神经网络的区别: 卷积神经网络的输出只与局部输入有连接。参数较少&#xff0…

如何将手机投屏到mac电脑

1、将iphone手机和mac电脑连接到同一个网络 2、点击电脑上的QuickTime Player 3、点击之后,这个QuickTime Player的进程就开启了 4、鼠标点到这个上面,然后右击,选择新建影片录制 5、点击这个按钮后,来到这个界面,点击…

汉王科技亮相世界数字健康论坛:以AI定义第四代血压计

作为科技行业的年度盛会,2024年中关村论坛年会于近日在北京揭幕。 作为中关村知名的人工智能企业,汉王科技携大模型的最新垂直应用、柯氏音法电子血压计等创新成果,在4月29日中关村论坛平行论坛“2024世界数字健康论坛”上亮相。 在《AI赋能血…

jupyter notebook使用与本地位置设置

本地安装好Anaconda之后,自带的有Jupter notebook。 使用jupyter notebook 使用jupyter notebook时,可以直接打开或者搜索打开: 打开后,我们生成的或者编辑的一些文件,都可以看到,如下: j…

UDP_INTRODUCTION_03:介绍 - 挂起的监听调用

测试目的: 验证当数据报到达一个没有挂起监听(LISTEN)调用的UDP端口时,UDP是否应该发送ICMP端口不可达(Port Unreachable)消息。 描述: 本测试用例旨在确保当数据报发送到DUT上一个未被监听的…

如何基于nginx组建多个子目录网站

华子目录 实验要求实验步骤 实验要求 组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/sxhkt和www.openlab.com/zywww.openlab.com/sxhkt使用http读取www.openlab.com/zy使用https读取 实验步骤 准备工作 [rootserver ~]# setenforce 0[ro…

PC通过串口发送指令控制LED+串口中断

如何让单片机接收数据? 首先要打开SCON中的串行接收控制位REN。当REN1时为允许接收状态,可以接收信息。 因此令SCON 0x50; 怎么知道收到数据? 利用RI接收中断请求标志位。当串行接收到第8位结束时由内部硬件自动置为RI1&#…