SQL注入原理
就是通过sql命令插入到web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SDL命令。具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在WEB表单中输入恶意SQL语句得到包含漏洞的网站数据库,而不是按照设计者意图去执行。
SQL注入类型
按照数据提交的方式:
GET注入、POST注入、COOKIE注入、HTTP头部注入
按照注入点类型来分:
数据型注入点、字符型注入点、搜索性注入点
按照执行效果来分:
基于布尔的盲注、基于时间的盲注、基于报错注入、联合查询注入、堆叠注入、宽字节注入
常用SQL语句
show databases;查看数据库名
注:Information_schema:包含所有库的所有数据,mysql5.0以上版本存在该数据库
use emp(表名);使用某个表
show tables;查看表
desc emp(表名);查看表的结构
select * from emp;查询所有列
select empmo,ename,mgr FROM emp;查询指定项
select distinct from emp;只显示结果不同的项
select * from emp where job=’clerk’ 查询指定行
select * from emp where (sal>50 or job=’MANAGE’)and ename like ‘J%‘;联合查询
SQL注入流程
检查是否存在SQL注入漏洞,注入的类型字符or数字(手工测试、扫描器)
猜解SQL查询语句中的字段数
确定显示位置
获取当前数据库
获取数据库中表,表中的字段名
下载数据
DVWA初级SQL注入
源码如下
1、判断SQL注入为字符型注入还是数字型注入
1’ and ‘1’=’1和1’ and ‘1’=’2如果回显不同,那么就是字符型注入
1 and 1=1和1 and 1=2如果回显不同,那么就是数字型注入
通过判断证明为字符型注入
2、猜测SQL查询语句中的字段数(这个主要是为了确定显示的位置)
当输入为3时出现如下界面:
说明只有两个字段
确定显示位置(有几个字段就要写几个)
获取当前数据库及版本信息
获取数据库中表
获取表中字段
查看具体字段的值
MD5解密
此时,显示出所有用户及MD5加密后出现的密码,现在可以在网站上进行MD5爆破查询:
https://www.somd5.com
DVWA中级SQL注入
源码如下
防御手段:
1、无法输入要查询的内容,只能选择1-5;
2、对单引号进行了过滤;
绕过手段:
1、可以抓包在Burp中修改数据包,将捕获到的数据包转到repeater模块,以便重复修改;
2、进行16进制转过滤;
1、判断SQL注入为字符型注入还是数字型注入
1=1时没有报错,1=2回显不同,通过判断证明为数字型注入
2、猜测SQL查询语句中的字段数(这个主要是为了确定显示的位置)
当输入为3时出现如下界面:
说明只有两个字段
确定显示位置(有几个字段就要写几个)
获取当前数据库及版本信息
获取数据库中表
库名可以用database()代替,也可转为十六进制
获取表中字段
1、首先对表名进行进制转换(我用的小葵)
2、利用十六进制进行查询
查看具体字段的值
MD5解密即可
DVWA高级SQL注入
源码如下
防御手段:
1、添加了limit 1 做限制,说明扫出一个结果就不向下扫描了,只输出一个结果;
绕过手段:
1、添加注释(#,–+)
DVWA impossible SQL注入
源码如下
防御手段:
可见该段代码使用了PDO技术,将输入与代码分隔开,这样便完全断隔了sql注入攻击;
嗯嗯~~就这么多了
来源:CSDN
作者:ST小姐姐
链接:https://blog.csdn.net/weixin_43871760/article/details/103864750