记一次DVWA下的SQL注入测试

一、前言

本次测试环境:DVWA漏洞练习平台、kali、Firefox浏览器。
常用函数解析:

数据库系统函数 所具有的作用 一般使用方法
version() 通过该函数可以直接的查看数据库系统的版本号 select version()
database() 该函数可以只管的查看当前操作的数据库名 select database()
user() 查看当前数据库的用户权限以及用户名 select user()
@@datadir 查询数据库路径
system_user() 查看当前系统用户名

Information_schema解析:
在mysql中,自带的information_schema这个表里面存放了大量的重要信息。具体如下:
如果存在注入点的话,可以直接尝试对该数据库进行访问,从而获取更多的信息。
SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns
from schemaname.tablename的结果取之此表。

二、Low级别的测

正常输入id,显示正常。非正常输入一个单引号后,发现程序报错,根据报错内容显示可猜测这是一个字符型的注入点。
在这里插入图片描述
输入一个简单的payload(1' or 1=1 #'),尝试拉取当前表信息,结果如下:
说明当前程序对输入的内容并没有做有效的过滤与防护。
在这里插入图片描述
根据order by来查询当前SQL语句的字段数,当猜测的字段数为2 时,数据库正确执行了该SQL,说明SQL语句中的字段数为2
在这里插入图片描述
通过union联合查询和database()来查看当前的数据库。
在这里插入图片描述
通过information_schema来查看数据库中存在的表。语法结构为:

1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#'

发现存在两个表,其中一个时Users表,猜测可能为用户信息表。
在这里插入图片描述
查询users表专用的字段名,语法如下:

1' union select 1,column_name from information_schema.columns where table_name='users'#'

发现其中存在几个字段,包括了id,password,username等。
在这里插入图片描述
在这里插入图片描述

查询相关字段信息,结果如下:用cmd5解密相关的密码信息,发现admin用户的密码是:password
在这里插入图片描述

三、Medium级别的测试

进入页面,发现用户ID只能通过复选框进行选择,并且数据提交方式是POST方式,只好打开burp suite进行抓包测试。按照low级别的方式进行测试,发现不能使用单引号等,会被转义为\'.
在这里插入图片描述
在此情况下,直接使用union联合查询,获取相关信息。发现使用的数据库依然是dvwa .
在这里插入图片描述
继续获取表信息与字段信息。使用的语法与low级别基本相同,但由于特殊字符做了转义,有细微的差别。语法分别如下:

获取表名: 1 union select 1,table_name from information_schema.tables where table_schema=(select database())# 获取表名
获取字段名:id=1 union select 1,column_name from information_schema.columns where table_name=0x7573657273#   //由于单引号被转义,而表名又必须使用引号包裹,所以使用十六进制进行绕过

在这里插入图片描述
在这里插入图片描述
获取到字段名后,继续获取相关账号信息。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_45590334/article/details/112429325