DVWA——sql注入

原理

将恶意的sql语句拼接到合法的语句中,从而达到执行sql语句的目的

类型

字符型、数字型、搜索型

过程

1、判断是否存在注入、注入时字符型还是数字型

2、猜解sql查询语句中的字段数(确定select查出了几列,union前后查询的列数需要一致)

3、确定显示位置(确定在屏幕上显示的结果与select查询列的对应关系,因为某些网页可能会适当调整输出结果的排列顺序,更加美观,但是在注入前,我需要知道我想要获取到的结果会在哪里显示)

4、获取当前数据库名,获取表名

5、获取表中字段名(获取列名)

6、下载数据

环境

开启DVWA服务器、浏览器访问登录,必要时设置代理,启用burpsuite

DVWA——sql注入_第1张图片

DVWA——sql注入_第2张图片

使用场景——low

      DVWA——sql注入_第3张图片

       源码分析

 DVWA——sql注入_第4张图片

1、判断注入点

报错、可能存在注入点

2、判断字符还是数字

DVWA——sql注入_第5张图片

这时一个字符型注入漏洞,多验证几次

 

DVWA——sql注入_第6张图片

DVWA——sql注入_第7张图片

3、判断字段值

1' order by 1#

DVWA——sql注入_第8张图片

DVWA——sql注入_第9张图片

DVWA——sql注入_第10张图片

判断有两列数据

这里的%23代表符号#

DVWA——sql注入_第11张图片

同样的其他一些特殊字符,必要时也可以转为url格式

4、确定显示位置

1' union select 1,2 #

DVWA——sql注入_第12张图片

DVWA——sql注入_第13张图片

当尝试位置为3时,失败

5、获取当前数据库名,获取表名

DVWA——sql注入_第14张图片

获取表名

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x64767761#

DVWA——sql注入_第15张图片

其中dvwa被转为16进制编码的结果

DVWA——sql注入_第16张图片

Information_schema表出现在sql版本5.0以上,特点是保存了所有数据库的库名、表名等信息

6、获取表中字段名

1' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x75736572#

DVWA——sql注入_第17张图片

7、下载数据

获取到了dvwa所有账户密码,其中密码只是做了hash,在线搜索即可转化为密码明文

DVWA——sql注入_第18张图片

DVWA——sql注入_第19张图片

Admin账户对应密码为password

使用场景——中级

DVWA——sql注入_第20张图片

DVWA——sql注入_第21张图片

代码分析:

DVWA——sql注入_第22张图片

开启burpsuite,客户端发一个包

DVWA——sql注入_第23张图片

DVWA——sql注入_第24张图片

DVWA——sql注入_第25张图片

1、判断是否存在注入、注入时字符型还是数字型

DVWA——sql注入_第26张图片

DVWA——sql注入_第27张图片

成功

2、猜解sql查询语句中的字段数

DVWA——sql注入_第28张图片

返回有两列(个人理解:这里我需要知道这个sql查询语句的查询目标列有几列,因为后面union查询需要前后查询语句具有相同数量的列。实际注入中,是看不到源码的,只能这样去尝试,得到结果。)

3、确定显示位置

DVWA——sql注入_第29张图片

测试到3失败

DVWA——sql注入_第30张图片

4、获取当前数据库名,获取表名

DVWA——sql注入_第31张图片

DVWA——sql注入_第32张图片

DVWA——sql注入_第33张图片

5、获取表中字段名

DVWA——sql注入_第34张图片

DVWA——sql注入_第35张图片

6、下载数据

DVWA——sql注入_第36张图片

使用场景——high

DVWA——sql注入_第37张图片

点击即出现弹窗,这样做的目的防止一些自动工具进行sql注入

DVWA——sql注入_第38张图片

代码分析:

DVWA——sql注入_第39张图片

在sql查询语句中添加了limit  1 以控制输入一个结果,可以通过#将其注释掉

1、判断是否存在注入、注入时字符型还是数字型

输入1’,会报错,千万不要关闭弹窗,否则该等级sql注入将会一直报错,可能需要重装dvwa服务器,再输入正确的拼接语句即可

DVWA——sql注入_第40张图片

存在注入点,验证

DVWA——sql注入_第41张图片

字符型,接下来操作与low级别操作相同

2、猜解sql查询语句中的字段数

DVWA——sql注入_第42张图片

3、确定显示位置

DVWA——sql注入_第43张图片

4、获取当前数据库名,获取表名

DVWA——sql注入_第44张图片

DVWA——sql注入_第45张图片

5、获取表中字段名

DVWA——sql注入_第46张图片

6、下载数据

DVWA——sql注入_第47张图片

使用场景——impossible

DVWA——sql注入_第48张图片

源码分析:

DVWA——sql注入_第49张图片

采用pdo技术,将用户输入的内容与源码分离,提前编译好sql语句,写死了语句格式,有效防御了sql注入;

你可能感兴趣的:(DVWA——sql注入)