MySQL注入
一、MySQL 4和MySQL 5注入的区别
(一)MySQL 4 注入方法
1、概述
MySQL 4以及之前的版本中,不支持子语句查询,且没有系统库information_schema,而且当php.ini文件中开启了magic_quote_gpc=on时,提交的变量中的字符(例如单引号,双引号,反斜杠,and,空字符等)会被数据库自动转化为含有反斜杠的转义字符,在这种情况下,MySQL 4版本中,我们进行注入的方法是类似于access数据库注入的方法仅查询猜解。
2、常见方法
- 逐个猜解当前数据库名、表名、字段名
- 利用order by获取主查询字段的数量
- 使用union select联合查询相应数据库的信息
(二)MySQL 5 的注入方法
1、概述
MySQL 5版本及以上存在information_schema系统库,所以在存在注入点的情况下获取数据是比较便捷的,当然也可以通过盲注进行数据采集,除此之外我们还可以通过load_file函数读取数据库服务器中的脚本文件/敏感文件的内容,间接获取数据库的相关信息,也可以通过dumpfile/outfile函数拿到webshell从而控制服务器。
2、常见方法
- 盲注
- order by+union select+information_schema进行数据获取
- 利用load_file()函数进行攻击
- 利用dumpfile/outfile函数
二、MySQL 的注入实践
利用dvwa的实验环境
(一)注入点的检测
-
概述
利用
and 1=1 和 and 1=2
和单引号法
通过观察返回页面的不同,可以简单的判断该位置是否存在注入点 -
注入url
http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1 and 1=1&Submit=Submit http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1 and 1=2&Submit=Submit # 两条语句都不出错,就试试单引号 http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?