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:附 件:,效果图...
【Lidar】Cloud Compare介绍安装包
CloudCompare是一款基于GPL开源协议的3D点云处理软件,最初被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能。在2005年后,CloudCompare实现了点云和三角形网格之间的比较。 Cl…...
Java中的Maven是什么?
Maven是一个开源的项目管理和构建工具,用于Java项目的构建、依赖管理和项目信息管理。它提供了一种标准的项目结构、规范的构建过程和丰富的插件生态系统,简化了项目的管理和构建过程。 Maven基于项目对象模型(Project Object Model…...

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

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

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

多线程的创建
一、基本概念 1 cpu CPU的中文名称是中央处理器,是进行逻辑运算用的,主要由运算器、控制器、寄存器三部分组成,从字面意思看就是运算就是起着运算的作用,控制器就是负责发出cpu每条指令所需要的信息,寄存器就是保存运…...
【django】APPEND_SLASH 路由末尾的斜杠问题
url路由末尾是否加斜杠的规范 加斜杠:表示是目录不加斜杠: 表示是文件 在django中的setting中,默认APPEND_SLASH True, 即当请求的路由末尾没有加斜杠, 如果尝试加上斜杠后,能在后端路由里匹配到,则会自…...

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

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

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

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

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

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题
可能是mybatisplus版本不兼容的问题,我之前用的3.4.0,springboot版本是3.1.3,maven版本是3.8.8,运行的时候报了这个错。现在修改了mybatisplus的版本,如下图: 这样就不报错了。 大家可以在这里找合适的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、内中断(异常) 2、外中断 三、中断机制的基本原理 四、系统调用 1、定义: 2、与库函数的区别 3、按功能分类 4、作用 一、中断的作用 1、“中断”是让操作系统内核夺回CPU使用权的唯一途径 …...

【C语言】文件操作(上)
一.什么是文件 文件是磁盘上的文件,文件中存放的数据不随程序的退出而销毁. 二.文件的打开与关闭 1.文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等&…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...