dvwa模拟实验1——sql注入

sql注入

1. sql注入基本内容

1.1 sql注入的原理

SQL注入的原理就是通过web应用程序利用sql语句或者字符串将非法的数据插入到服务器端的数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。

1.2 sql注入的类型

按照数据提交的方式分类:get注入、post注入、cookie注入、HTTP头部注入
按照注入点类型来分类:数字型、字符型、搜索型
按照执行效果来分类:基于布尔的盲注、基于时间的盲注、基于报错注入、联合查询注入、堆叠注入、宽字节注入

1.3 怎样判断是否有sql注入?

在一个网页上输入一个id值,网页会返回一个新的网页(页面会返回一些内容)。

1.4 sql注入的流程

1) 判断是否存在sql注入,注入是字符型还是数字型
2) 猜测sql查询语句中的字段数
3) 确定回显的位置
4) 获取当前数据库
5) 获取数据库中的表
6) 获取表中的字段名
7) 下载数据

2.DVWA模拟实验

2.1 low等级

1. 分析源代码dvwa模拟实验1——sql注入_第1张图片
通过源码可以发现注入类型是字符型,并且该等级下没有任何防御措施!
2. 注入过程
(1) 判断是否有注入点
dvwa模拟实验1——sql注入_第2张图片
(2)判断sql注入的字段数
dvwa模拟实验1——sql注入_第3张图片在这里插入图片描述
说明字段数是2。
(3)查看回显位置
dvwa模拟实验1——sql注入_第4张图片
(4)查看数据库名
dvwa模拟实验1——sql注入_第5张图片
(5)查看数据库中的表名
dvwa模拟实验1——sql注入_第6张图片
(6)查看某个数据表中的列名
dvwa模拟实验1——sql注入_第7张图片(7)查看数据
dvwa模拟实验1——sql注入_第8张图片
密码是由md5加密而成的,可以在线进行解密
dvwa模拟实验1——sql注入_第9张图片

2.2 medium等级

1.分析源代码
dvwa模拟实验1——sql注入_第10张图片
从源码中可以看出,该等级下利用mysqli_real_escape_string函数将特殊符号进行了转义。
并且设置了下拉框,用户不能直接输入,只能选择。
注入类型是数字型
2.绕过方式
可以利用burpsuite工具抓包来修改请求包。
3.注入过程
(1)利用burpsuite工具抓包
dvwa模拟实验1——sql注入_第11张图片
(2)修改数据包,判断是否存在注入点
dvwa模拟实验1——sql注入_第12张图片
(3)判断字段数
dvwa模拟实验1——sql注入_第13张图片
dvwa模拟实验1——sql注入_第14张图片
字段数是2。
(4)查看数据库名
dvwa模拟实验1——sql注入_第15张图片
(5)查看数据库中的表名
这里要注意的是,由于源代码中对特殊字符进行了转义,所以在写数据库名的时候不能用’dvwa’,而应该用函数database()
dvwa模拟实验1——sql注入_第16张图片
(6)查看数据表中的列名
dvwa模拟实验1——sql注入_第17张图片
users用十六进制表示
(7)查看数据
dvwa模拟实验1——sql注入_第18张图片

2.3 high等级

1.分析源代码
dvwa模拟实验1——sql注入_第19张图片
从源码中可以看出,对用户的输入做了限制,只允许用户输入一个字符。
2.绕过方法
利用 # 将其注释掉
3.注入过程
重复上述过程,可以得到数据库中的数据
dvwa模拟实验1——sql注入_第20张图片
dvwa模拟实验1——sql注入_第21张图片

2.4 impossible等级

dvwa模拟实验1——sql注入_第22张图片
利用PDO操作可以有效的防御sql注入漏洞!!!

你可能感兴趣的:(DVWA模拟实验)