当前位置: 首页 > news >正文

sqli第一关

1.在下使用火狐访问sqlilabs靶场并使用burpsuite代理火狐。左为sqlilabs第一关,右为burpsuite。

2.输入?id=1 and 1=1 与?id=1 and 1=2试试

可以看出没有变化哈,明显我们输入的语句被过滤了。在?id=1后面尝试各种字符,发现单引号         '   包裹后可以绕过。

 虽然注入成功了,但是这两种结果还是一样的,说明语句没有被执行并且这是字符型注入。报错提示我们说SQL语法错误,哦,原来是后端代码在注入点后还有个'LIMIT 0,1',意思就是从你表中的第0个数据开始只读取一个,此处可以使用--+或者%23来注释掉后面的LIMIT 0,1

--起着注释的作用,将后面的语句注释掉,+ 则代表空格 ,为什么要加一个+而不是单纯的空格呢?因为使用--  (后接一个单纯的空格),在传输过程中空格会被忽略,会导致无法注释,所以在get请求传参注入时才会使用--+的方式来闭合,因为+在SQL语句中会被解释成空格。空格的urlencode编码格式是%20,所以使用--%20也不会报错。

 同理#的urlencode编码格式是%23,那为什么不能直接用#而必须要使用urlencode编码格式呢?这个问题问的好,在url解释执行的时候,url中#号是用来指导浏览器动作的,对服务器端无用,所以我们要将#写成%23来完成注入。那为什么有些注入使用了#呢?这个问题问的也很好,说明小伙子你做事细心,根骨清奇。在get请求时是不可以直接使用#的,如果是post请求,则可以直接使用#来进行闭合。常见的就是表单注入,如我们在后台登录框中进行注入。为什么--后面必须要有空格,而#后面就不需要?哈哈哈哈,这个问题问的有点刁钻,果然阁下是人中龙凤,马中赤兔,不鸣则已,一鸣惊人。且容在下细细道来。在使用--注释时,后面有空格才能形成有效的SQL语句,而#后面有没有空格是不做要求的,简单来说就是,#后面有没有无所谓。

 成功注释了'LIMIT 0,1'之后,阁下就可以大展身手了。接下来我们使用union联合注入。在注入前我们还需要使用order by来确定表中的列数,为什么我们要确定表中字段的列数呢?这就不得不说联合查询特点:

1、要求多条查询语句的查询列数是一致的
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项

?id=1' order by 1--+
好,那我们开始构造语句如上。

一直往1后面的数字尝试,终于在4的时候发现了错误, 回显说这是一个未知的列,于是我们确定了字段数为3.

 从这里我们使用burpsuite来注入,因为后面的语句太长了而且也不习惯用浏览器的插件,不过使用burpsuite注入跟url直接注入是并没有太大区别的。

 抓取请求后右键发送到Repeater模块更容易操作。

 注意看红框框的地方哈,后面的图就不标啦(单击放大查看图片,单击图片外区域退出,不用谢

 骗你的,那种确实比较费眼睛,在下心疼giegie,这种样式怎么样。

 虽然图片有点失真,不过您就知足吧。

?id=1' union select 1,2,3--+
如上接下来使用联合查询看看有没有回显位。

咦,发生甚么事了,怎么没有动静。定睛一看原来是后端代码没有执行我们的语句,有什么办法让它不执行前面的id=1转来执行后面我们想要它执行的union select 1,2,3呢?好办,让id=一个不存在的值就OK啦。一般都是使用负数或者较大的数,这里0也可以,但我们就按照习惯使用-1好了。

 这个2和3是个是什么意思呢?这是两个回显位啦。喂,能不能讲清楚点?好小子,敢于挑战权威,我欣赏你。返回的结果为2和3,意味着我们可以在2和3的位置输入SQL语句。比如我们试一试查看当前数据库名以及数据库的版本名。

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


 好,我们知道了当前数据库名为security,数据库的版本为5.5.24。知道了数据库名接下来我们尝试获取表名,只是知道了当前数据库名怎么构造语句来获取表名呢?嘿嘿,小伙子你不用担心这个,在MySQL中,除了自己新建的几个数据库之外,还有自带的四个数据库,名字分别是

information_schema数据库

保存了MySQl服务所有数据库的信息。具体MySQL服务有多少个数据库,各个数据库有哪些表,各个表中的字段是什么数据类型,各个表中有哪些索引,各个数据库要什么权限才能访问。

mysql数据库

这个是mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

performance_schema数据库

主要用于收集数据库服务器性能参数,提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期

test数据库空的,这里面啥都没有。另外我们还需要知道这些知识information_schema.tables:包含了数据库里所有的表table_schema:数据库名table_name:表名column_name:字段名好的,了解了这些之后我们来试一试构造语句获取表名。
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+


看到这里你是不是又要问了,group_concat()是干嘛的?老夫我早就准备好了,group_concat()是MySQL中的一个函数。它将group by产生的同一个分组中的值连接起来,返回一个字符串结果,并且默认使用逗号分隔。可是group by又是个啥?额,一看你就没学过MySQL,小伙子我这就帮不了你啦,在工作或者学习中,总有很多东西是我们不了解甚至闻所未闻的,这很正常。没有人生而知之,但是你既然遇到了,你就得面对它。记住这样用就行了,还是去了解甚至抽空学习它,都取决于你自己,非学无以广才,非志无以成学。学到的知识都是有用的,它总会在潜移默化中改变你。加油,鲜衣怒马少年时,不负韶华行且知。

 成功啦!它返回了四个表名(这里我们只使用了2这个回显位)。毫无疑问,users表中的内容是我们需要的,接下来我们尝试获取字段名。

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


从两段如此相似的代码中我们可以看出,MySQL查询语句大体是相似的,只需要改变其中的表名,列名以及属性值。

 OK,从返回的结果来看,我们获得了三个字段名,分别是id,username以及password。有一点数据库基础的小伙子都知道,id字段名下的字段一般都是普通的id,对我们并没有实质的意义。而另外两个字段名username和password就不一样,对我们这些练习注入的人来讲,获取这两个字段中的数据无疑就是拿到了钥匙。闲话少说,我们继续构造语句来获取其中的数据。

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


这一句语句是不是简单多啦,偷着乐吧你。

 诶,看到这里你是不是感觉非常奇怪但是又说不上来。没错,两个字段中的数据连接起来了,group_conccat()函数只是用逗号将每一列分隔开了。这该如何是好呢?不用担心,函数是死的,人是活的嘛。在字段名之间再加上某个字符的十六进制,不就可以通过它将同一列的用户名和密码分隔开了嘛.

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

 到此就结束啦

相关文章:

sqli第一关

1.在下使用火狐访问sqlilabs靶场并使用burpsuite代理火狐。左为sqlilabs第一关,右为burpsuite。 2.输入?id1 and 11 与?id1 and 12试试 可以看出没有变化哈,明显我们输入的语句被过滤了。在?id1后面尝试各种字符,发现单引号 包…...

入行IC | 新人入行IC选择哪个岗位更好?

很多同学入行不知道怎么选择岗位。IC的岗位一般有设计、验证、后端、封装、测试、FPGA等等。但是具体到每个人身上,就要在开始的时候确定下你要找的职位,可以有两个或三个,但是要分出主次,主次不分会让你纠结整个找工作的过程。 …...

时间旅行的Bug 奇怪的输入Bug

故事一:时间旅行的Bug 在一个普通的工作日,程序员小明正在开发一个时间旅行的应用程序。这个应用程序可以让用户选择一个特定的日期和时间,然后将用户的意识传送到过去或未来的那个时刻。小明对这个项目非常兴奋,他认为这将是一个…...

解决nbsp;不生效的问题

代码块 {{title}} title:附 \xa0\xa0\xa0件,//或者 <span v-html"title"></span> title:附 件&#xff1a;,效果图...

【Lidar】Cloud Compare介绍安装包

CloudCompare是一款基于GPL开源协议的3D点云处理软件&#xff0c;最初被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构&#xff0c;在进行点云对比这类任务时具有出色的性能。在2005年后&#xff0c;CloudCompare实现了点云和三角形网格之间的比较。 Cl…...

Java中的Maven是什么?

Maven是一个开源的项目管理和构建工具&#xff0c;用于Java项目的构建、依赖管理和项目信息管理。它提供了一种标准的项目结构、规范的构建过程和丰富的插件生态系统&#xff0c;简化了项目的管理和构建过程。 Maven基于项目对象模型&#xff08;Project Object Model&#xf…...

计算机操作系统

计算机操作系统 1.进程管理 1.1 基础概念 进程&线程 进程是操作系统资源分配的基本单位。一个进程运行时&#xff0c;会获取必要的CPU、内存地址空间&#xff0c;以及运行时必要的IO设备。 线程则是执行调度的最小单位。一个进程会由一个线程或者多个线程执行调度任务。…...

海学会读《乡村振兴战略下传统村落文化旅游设计》2023年度许少辉八一新书

海学会读《乡村振兴战略下传统村落文化旅游设计》2023年度许少辉八一新书...

tkinter树形图组件

文章目录 初步回调函数绑定滚动条 初步 Treeview是ttk中的树形表组件&#xff0c;功能十分强大&#xff0c;非常适用于系统路径的表达。为了知道属性图到底是什么&#xff0c;下面先做个最简单的树形图 其代码如下 import tkinter as tk from tkinter import ttkdct {"…...

多线程的创建

一、基本概念 1 cpu CPU的中文名称是中央处理器&#xff0c;是进行逻辑运算用的&#xff0c;主要由运算器、控制器、寄存器三部分组成&#xff0c;从字面意思看就是运算就是起着运算的作用&#xff0c;控制器就是负责发出cpu每条指令所需要的信息&#xff0c;寄存器就是保存运…...

【django】APPEND_SLASH 路由末尾的斜杠问题

url路由末尾是否加斜杠的规范 加斜杠&#xff1a;表示是目录不加斜杠&#xff1a; 表示是文件 在django中的setting中&#xff0c;默认APPEND_SLASH True, 即当请求的路由末尾没有加斜杠&#xff0c; 如果尝试加上斜杠后&#xff0c;能在后端路由里匹配到&#xff0c;则会自…...

iOS16.0:屏幕旋转

此文写于2022年08月03日&#xff0c;距离iOS16正式版推出还有一个多月的时间&#xff0c;iOS16 beta版本有很多API的修改&#xff0c;今天讨论的是屏幕旋转&#xff0c;基于Xcode 14.0 beta4。 之前的屏幕旋转会报错&#xff1a; [Orientation] BUG IN CLIENT OF UIKIT: Settin…...

Carla学习笔记(二)服务器跑carla,本地运行carla-ros-bridge并用rviz显示

一、服务器跑carla 详见Carla学习笔记&#xff08;一&#xff09;服务器跑carla本地显示窗口_Zero_979的博客-CSDN博客 只需要启动服务器端就行&#xff1a; ./CarlaUE4.sh -carla-rpc-port2000 -RenderOffScreen -graphicsadaper1 二、本地下载 carla-ros-bridge 官方库&…...

数学建模--退火算法求解最值的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ 1.设定退火算法的基础参数 2.设定需要优化的函数,求解该函数的最小值/最大值 3.进行退火过程&#xff0c;随机产生退火解并且纠正,直到冷却 4.绘制可视化图片进行了解退火整体过程 &…...

地理地形sdk:Tatuk GIS Developer Kernel for .NET Crack

Tatuk GIS Developer Kernel for .NET 是一个变体&#xff0c;它是受控代码和 .NET GIS SDK&#xff0c;用于为用户 Windows 操作系统创建专业 GIS 软件的过程。它被认为是一个完全针对Win Forms 的.NET CIL&#xff0c;WPF 框架是针对C# 以及VB.NET、VC、Oxy 以及最终与.NET 的…...

Day_81-87 CNN卷积神经网络

目录 一. CNN卷积神经网络与传统神经网络的不同 1. 模型图 2. 参数分布情况 3. 卷积神经网络和传统神经网络的层次结构 4. 传统神经网络的缺点&#xff1a; 二. CNN的基本操作 1. 卷积 2. 池化 三. CNN实现过程 1. 算法流程图 2. 输入层 3. 卷积层 4. 激活层 5. 池化层 6. 全连…...

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题

可能是mybatisplus版本不兼容的问题&#xff0c;我之前用的3.4.0&#xff0c;springboot版本是3.1.3&#xff0c;maven版本是3.8.8&#xff0c;运行的时候报了这个错。现在修改了mybatisplus的版本&#xff0c;如下图&#xff1a; 这样就不报错了。 大家可以在这里找合适的my…...

Spring AOP基础动态代理基于JDK动态代理实现

目录 1. 预备知识-动态代理 1.1 什么是动态代理 1.2 动态代理的优势 1.3 基于JDK动态代理实现 2. AOP 2.1 基本概念 2.2 AOP带来的好处 3. Spring AOP 3.1 前置通知 3.2 后置通知 3.3 环绕通知 3.4 异常通知 3.5 适配器 1. 预备知识-动态代理 1.1 什么是动态代理…...

第一章 计算机系统概述 五、中断和异常、系统调用

目录 一、中断的作用 二、中断的类型 1、内中断&#xff08;异常&#xff09; 2、外中断 三、中断机制的基本原理 四、系统调用 1、定义&#xff1a; 2、与库函数的区别 3、按功能分类 4、作用 一、中断的作用 1、“中断”是让操作系统内核夺回CPU使用权的唯一途径 …...

【C语言】文件操作(上)

一.什么是文件 文件是磁盘上的文件,文件中存放的数据不随程序的退出而销毁. 二.文件的打开与关闭 1.文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区&#xff0c;用来存放文件的相关信息&#xff08;如文件的名字&#xff0c;文件状态及文件当前的位置等&…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...