渗透之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.rhkb.cn/news/315230.html

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

相关文章

如何30天快速掌握键盘盲打

失业后在家备考公务员,发现了自己不正确的打字方式,决定每天抽出一点时间练习打字。在抖音上看到一些高手的飞速盲打键盘后,觉得使用正确的指法打字是很必要的。 练习打字,掌握正确的键盘指法十分关键。 练习打字的第一步是找到…

ElasticSearch批处理

在刚才的新增当中,我们是一次新增一条数据。那么如果你将来的数据库里有数千上万的数据,你一次新增一个,那得多麻烦。所以我们还要学习一下批量导入功能。 也就是说批量的把数据库的数据写入索引库。那这里的需求是,首先利用mybat…

C++中布隆过滤器

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

【单链表专题】

单链表专题 1.引入2.链表2.1链表的关系2.2链表的结构 3.代码实现链表 1.引入 对于顺序表而言 中间/头部的插⼊删除,时间复杂度为O(N)增容需要申请新空间,拷⻉数据,释放旧空间。会有不小的消耗。增容⼀般是呈2倍的增⻓,势必会有⼀…

Github进行fork后如何与原仓库同步[解决git clone 太慢的问题]

前言 fork了一个仓库以后怎么同步源仓库的代码? 先说一下git clone太慢的问题,可以通过代理拉取代码,具体请看: https://gitclone.com/ 步骤 1、执行命令 git remote -v 查看你的远程仓库的路径。 以一个实际例子说明&#x…

[Spring Cloud] (4)搭建Vue2与网关、微服务通信并配置跨域

文章目录 前言gatway网关跨域配置取消微服务跨域配置 创建vue2项目准备一个原始vue2项目安装vue-router创建路由vue.config.js配置修改App.vue修改 添加接口访问安装axios创建request.js创建index.js创建InfoApi.js main.jssecurityUtils.js 前端登录界面登录消息提示框 最终效…

微信小程序使用echarts组件实现饼状统计图功能

微信小程序使用echarts组件实现饼状统计图功能 使用echarts实现在微信小程序中统计图的功能,具体的实现步骤思路可进我主页查看我的另一篇博文https://blog.csdn.net/weixin_45465881/article/details/138171153进行查看,本篇文章主要使用echarts组件实…

SpringBoot的自动装配原理

SpringBoot自动装配原理 SpringBoot的启动类上有一个注解:SpringBootApplication 。该注解是三个注解的复合注解。 1.SpringBootConfiguration 注解 点进SpringBootConfiguration 注解,可以发现其核心注解为Configuration注解: Configuration…

python文件 成绩分析

‘’文件score.txt中存储了学生的考试信息,内容如下 小明,98 小刚,90 小红,91 小王,98 小刘,80 请写代码,读取文件数据,并进行如下分析 最高分和最低分分别是多少?得最高分的学生有几个? 得最低分的学生有几个平均分是多少? ‘’’ def rea…

Web3技术解析:区块链在去中心化应用中的角色

引言 在过去几年中,Web3技术已经成为了互联网领域的一个热门话题。作为区块链技术的延伸,Web3不仅仅是数字货币的代名词,更是一个能够为各种应用提供去中心化解决方案的强大工具。本文将深入探讨区块链在Web3去中心化应用中的关键角色&#…

Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能: 熟悉Python基础语法,以自行阅读python代码块熟悉Vscode或其它编辑工具的应用 在数据可视化领域,Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形,帮助我们更好…

企业工厂如何逆风翻盘:VR全景打破多重桎梏

现阶段,制造业工厂面临的困境,就是用着上百万的设备,却赚着几毛钱的利润。传统的工厂参观方式也存在着很多的局限性,例如时间上不方便、不能实地参访、生产线具有隐患等,都会使得参观者不能深入地了解工厂的生产环境和…

Android Studio实现内容丰富的安卓养老平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 158安卓养老 1.开发环境 后端用springboot框架,安卓的用android studio开发android stuido3.6 jak1.8 idea mysql tomcat 2.功能介绍 安卓端: 1.注册登…

实验7:路由冗余协议HSRP配置管理(课内实验以及解答)

实验目的及要求: 理解首跳冗余协议(FHRP)的工作原理,掌握热备份路由器协议 (HSRP)(思科私有协议)原理和配置。能够实现网络终端设备虚拟网关的配置和网络故障的灵活切换,完成相应网络的联通性测…

斐波那契数列

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 收入专栏:初阶数据结构_LaNzikinh篮子的博客-CSDN博客 文章目录 前言一.斐波那契数二.改循环三.尾递归总结 前…

智能外呼文书送达系统,智慧检务解决方案

在全民数字化改革中,司法体制改革不断推进的大背景下,合肥高新技术产业开发区人民检察院的内设机构改革已完成落地,刑事案件审查办理迎来了重大改变,需要检察官对现有办案方式方法做出相应的调整,将主要精力从大量的重…

初始计算机网络

TCP/IP TCP/IP模型 TCP/IP网络模型:对于不同设备之间的通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。 TCP/IP分层 这个网络协议是分层的,每一层都有…

【EI会议|投稿优惠】2024年机械应用与能源动力国际会议(ICMAEP 2024)

2024 International Conference on Mechanical Applications and Energy Power 一、大会信息 会议名称:2024年机械应用与能源动力国际会议 会议简称:ICMAEP 2024 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 会议官网:…

【Linux系统编程】第九弹---权限管理操作(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、目录权限 2、粘滞位 总结 1、目录权限 首先提出一个问题,删除一个文件需要什么权限呢?&#xff1f…

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(四)

第 4 章 数据库设计 4.1 数据库设计原则 4.2.数据库概念结构设计 4.3 数据库表设计 4.4.本章小结 前面内容请移步 基于 SpringCloud 的在线交易平台乐优商城的设计与实现(三) 相关免费源码资源 乐优商城 第 4 章 数据库设计 4.1 数据库设计原…