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.文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等&…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...