文章目录
前言
大家好,我是阿里斯,一名IT行业小白。今天我为大家分享的内容是mysql数据的一些特性,为后面分享的sql注入打下一定的基础。另外我还会在本篇文章中分享一个sql注入靶机和一个便携式渗透测试浏览器(已安装好各种插件),希望能够帮助到大家。
MySQL数据库几种注释
# 单行注释 url编码 %23
-- --后面跟一个空格
/* */ 块注释
/*! */ 内联注释
内联注释特点
内联注释是基于块注释衍生出的一种注释风格,内联注释有个特殊的特点,这个特点和M有SQL的版本关系密切,接下来我们一起来看内联注释和MySQL版本到底有什么关系!
(1)测试第一步,讲数据库所有数据全部查出
(2)为sql语句添加where子句,可以发现结果只有一条
(3)将where子句使用内联注释包裹,虽然where子句被注释,但是非常明显,该子句依然有效
(4)查询MySQL数据库版本
(5)在刚刚的语句中添加一个数字为80013,查看结果
(6)将数字小于80013,再看结果
(7)总结内联注释特性
mysql的数据库版本是8.0.12,这个版本号还可以写成8.00.12,由此这个版本号切换成纯数字可以是80012,根据上面的试验得出,在内联注释中的数字小于等于版本号时,sql语句可以被执行,反之则不可以。
MySQL函数
user() 返回MySQL当前登录的用户名和主机名
database() 返回当前数据库名称
@@basedir 返回M有SQL的安装路径
@@datadir 返回MySQL文件的存放路径
@@version_compile_os 返回操作系统版本
@@version 返回MySQL数据库版本
MySQL读取文件函数
load_file()函数读取文件
前提:
必须有权限读取并且文件必须完全可读
有文件的完整路径
能够使用union查询(sql注入时)
对Web目录有写权限用户必须有secure_file_priv=文件权限
欲读取文件必须小于max_allowed_packetde的允许值
secure_file_priv的值
secure_file_prive=null 限制mysqld不允许导入 | 导出
secure_file_priv=/tmp/ 限制mysql的导入 | 导出 只能发生在/tmp/目录下
secure_file_priv 不对mysql的导入 | 导出做限制
测试
其实前提条件中你最需要关心的时绝对路径和secure_file_priv权限,因为其他的东西除非特殊设置,一般情况下不会影响我们
(1)查看secure_file_priv的值,可以看到它没有值,没有值代表可以读写任意目录
(2)文件内容读取成功
into outfile 写文件函数
前提
文件名必须全路径(绝对路径)
用户必须有secure_file_priv=文件权限
没有对 ‘ 单引号过滤
能够使用union查询(sql注入时)
对web目录有写权限
测试:
这次就不再查询secure_file_priv的值了,因为已经确认可以随意读取了
MySQL连接字符串函数
concat(str1,str2…) 横向合并
concat(“分割字符”,str1,str2…) 横向合并,并通过指定字符分割
group_concat(str1,str2…) 纵向合并,结果只有一条数据
连接函数综合使用小练
MySQL中Information_schema库
这个数据库是MySQL数据库中特点,在这个数据库中有三个表,这三个表存放了所有的数据库名,所有数据表明和所有数据表的字段名。这个数据库不但方便了数据库管理同时也方便可sql注入。
SCHEMATA表
字段:SCHEMA_NAME(所有库名)
TABLES表
字段:TABLE_SCHEMA(所有库名) TABLE_NAME(所有表名)
COLUMNS表
字段:TBALE_SCHEMA(所有库名),TABLE_NAME(所有表名),COLUMN_NAME(所有字段名)
测试
## 靶机获取
SQL注入靶机和便携式浏览器大家可以到我的公众号发送消息:靶机获取
今天分享的内容十分的杂乱但是也都非常的实用,我小白,期待成为别人眼中的大佬,如果你也是,我们一起加油好吗?