note-01
sql-labs 学习笔记
sql-labs less-1
字符型
sql注入后端代码(编的)
1 |
|
在url中直接使用’#’会被url解析,导致传入服务器的不为’#’所以使用‘- - +’
1 |
|
拼入sql查询
1 |
|
回显:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’1’’ LIMIT 0,1’ at line 1
KIMI:
这个错误信息表明你的SQL语句中存在语法问题,具体问题出现在’1’附近,可能是因为SQL语句的拼接方式不正确,或者某些部分的格式不符合MySQL的语法规则。
从错误信息来看,问题可能出在以下几个方面:
单引号的使用:错误信息中提到’1’,这表明SQL语句中可能有多余的单引号,或者单引号的使用方式不正确。
LIMIT子句的格式:LIMIT 0,1是正确的语法,但错误信息表明它可能与前面的语句拼接不当。
注入攻击:如果’1’是用户输入的一部分,那么这可能是SQL注入攻击的迹象。
LIMIT 0,1 是 SQL 语句中用于限制查询结果数量的子句,特别是在 MySQL 数据库中。
它的作用是从查询结果中提取指定范围的记录。具体来说,LIMIT 0,1 的含义如下:
1 |
|
回显有数字判断为字符型
记得用‘-1’来使得前面对‘-1’的查询出现null的结果免得使用‘1’查询出的结果会将后面的查询覆盖,由刚才的:
1 |
|
测试回显行列
1 |
|
查询当前库
1 |
|
后面的paylaod
1 |
|
在博客园和csdn有很多详细解释,只记下自己不明白去查询的点以防以后忘记
我的新知识点
group_concat //将查询到的表的数据结果拼接起来
union select //联合查询,能将同时查询 1,2,3 个
information_schema //在SQL中,INFORMATION_SCHEMA 是一个特殊的数据库,它存储了数据库管理系统(DBMS)的元数据信息。这些元数据包括数据库的结构、表的信息、列的定义、用户权限、存储过程等。
INFORMATION_SCHEMA 提供了一种标准化的方式来访问数据库的元数据信息。它类似于一个“数据库的数据库”,帮助用户了解数据库的内部结构和配置。通过查询 INFORMATION_SCHEMA 中的表,用户可以获取以下信息:
数据库中有哪些表(INFORMATION_SCHEMA.TABLES)。
每个表有哪些列(INFORMATION_SCHEMA.COLUMNS)。
数据库的用户权限(INFORMATION_SCHEMA.USER_PRIVILEGES)。
数据库的字符集和校对规则(INFORMATION_SCHEMA.CHARACTER_SETS)。
存储过程和函数的定义(INFORMATION_SCHEMA.ROUTINES)。
数据库的表分区信息(INFORMATION_SCHEMA.PARTITIONS)。
数据库的外键约束信息(INFORMATION_SCHEMA.KEY_COLUMN_USAGE)。
我看我目前用到的是下面:
(1) INFORMATION_SCHEMA.TABLES
用途:列出数据库中所有表的信息。
字段:
table_schema:表所属的数据库名称。
table_name:表的名称。
table_type:表的类型(如 BASE TABLE 或 VIEW)。
engine:表的存储引擎(如 InnoDB 或 MyISAM)。
(2) INFORMATION_SCHEMA.COLUMNS
用途:列出表中所有列的详细信息。
字段:
table_schema:表所属的数据库名称。
table_name:表的名称。
column_name:列的名称。
data_type:列的数据类型
character_maximum_length:列的最大长度。
搭配 where 来使用
回顾刚才的payload
1 |
|
less-2
新知识点
数字型注入的sql语句
后端代码 例
1 |
|
与字符型的区别是将用户输入内容:
1 |
|
直接拼接到sql语句中。
对比字符型sql语句
1 |
|
所以不需要使用 “ ‘ “ 来构建新的查询,也不需要 ‘#’ 或者 ‘–+’来将后面的语句注释掉,如果带密码则需要注释吧
1 |
|