登录dvwa后,点击左边的"SQL Injection",出现以下界面:

下面做一些学习总结。

第一步:用 "order by n" 获得表中的属性列数,它的意思是用表中的第n个属性列对返回的结果进行排序。我们将n从1开始,然后逐渐递增,直到数据库返回错误,下面是n = 1,2的结果:

当 n = 3 时出现了"Unknown column '3' in 'order clause'"的错误,说明当前的表中没有第3个属性列。至于这个表是什么,我还没有研究过,有待进一步学习,下面我假设这个表是tb。

当注入语句

' order by 1; -- 

时,在后台被转换成下面的形式:

select * from tb where user_id = '' order by ; -- '

这里要注意几个点:第一,后台在转换SQL语句时,会自动添加一对单引号;第二,'--'是mysql数据库的单行注释符,而且第二个'-'后面一定要有一个空格(下面构造的SQL语句也是如此),这里它把后台添加的单引号注释掉了,所以数据库只执行了分号前面的SQL语句。

第二步:union 查询

现在已经知道了tb中有2个属性列,那么我们可以利用union来获得关于数据库的一些基本信息,比如

(1)查询当前用户和数据库名称

' and 1=2 union select user(),database(); -- 

结果如下

(2)查询数据库的版本信息和操作系统信息

' and 1=2 union select @@version,@@version_compile_os; -- 

这里要注意的是,必须保证union左右两边的select语句所查询的属性列数目相同,从前面我们知道,当前表中有2个属性列,所以在右边的select语句中,我们只能选择两个属性来查询,或多或少都会导致查询失败。另外,有几个关于查询的常用函数,分别是:@@version查询mysql的版本信息,user()查询用户名,database()查询数据库名称,@@datadir查询数据库路径,@@version_compile_os查询操作系统版本......可以根据自己感兴趣的信息来选择。

第三步:爆库爆表爆列

当mysql的版本大于5.0时,有个默认的数据库information_schema,里面存放着所有数据库的信息,比如数据库名、表名、列名等。

(1)爆库

' and 1=2 union select 1, schema_name from information_schema.schemata; -- 

上面的语句返回了information_schema数据库中schemata表的schema_name属性列,即是mysql中所有数据库的名称,结果如下

从结果中可以看到,目前的mysql有6个数据库。

(2)爆表

' and 1=2 union select table_schema,table_name from information_schema.tables; -- 

上面这条语句返回了各个数据库中的所有表名称,下面是部分截图的结果

现在我们知道了dvwa数据库中有两个表,分别是guestbook和users,下面我们构造SQL语句得到users表中的所有属性列。

(3)爆列

' and 1=2 union select table_name, column_name from information_schema.columns; -- 

上面的语句返回了各个表中的所有属性列,users表的结果如下:

现在我们知道了users表中的所有属性列名称了,我们可以查询自己感兴趣的东西,比如说用户的user_id和password

(4)爆密码

' and 1=2 union select user_id,password from dvwa.users; -- 

上面的语句返回了用户ID和其对应的密码,结果如下:

可惜密码被加密了,唉.....

因为我也是刚开始学习SQL注入,所以有错误是在所难免的,欢迎大家指正,谢谢!

2016-09-21

low security dvwa--SQL Injection的更多相关文章

  1. sqlmap dvwa SQL Injection使用小记

    刚刚开始学习sql injection,初步使用sqlmap,使用 GET http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=1&Submi ...

  2. DVWA SQL Injection 通关教程

    SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害巨大,常常会导致整个数据库被“脱 ...

  3. DVWA SQL Injection(Blind) 通关教程

    SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是 ...

  4. DVWA SQL Injection LOW

    最近在学习SQL注入,初出茅庐,就从dvwa开始吧 sql注入可以通过sqlmap工具实现,为了更好地了解原理,这里主要是手工注入 注入的一般流程为: 1,找到注入点,此步骤可通过工具 2,判断注入类 ...

  5. DVWA SQL Injection High

    High 虽然是high等级,但是通过源码审计发现与low等级一样,没有对传入的值做任何过滤,唯一不同的就是点击连接后打开了另外一个对话框,用户在新打开的页面输入 其余的步骤与low级别的一样:htt ...

  6. DVWA SQL Injection Medium

    Mdeium 基本的步骤及知识点在上节已经提到过这里不再赘述:https://blog.csdn.net/WQ_BCJ/article/details/84554777 1)与low级别不同,本次采用 ...

  7. 【DVWA】SQL Injection(SQL 注入)通关教程

    日期:2019-07-28 20:43:48 更新: 作者:Bay0net 介绍: 0x00.基本信息 关于 mysql 相关的注入,传送门. SQL 注入漏洞之 mysql - Bay0net - ...

  8. SQL Injection (Blind) Low

    SQL盲注分析 盲注较普通注入难度会有所增加,根据页面响应不同大概分为以下几种:布尔型盲注:时间盲注:报错注入 普通注入与盲注的对比: 普通注入:                            ...

  9. 使用sqlmap注入DVWA的SQL Injection菜单

    1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...

  10. 《11招玩转网络安全》之第四招:low级别的DVWA SQL注入

    以DVWA为例,进行手工注入,帮助读者了解注入原理和过程. 1.启动docker,并在终端中执行命令: docker ps -a docker start LocalDVWA docker ps 执行 ...

随机推荐

  1. Nlog配置实例

      彩色Console target <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns= ...

  2. Mono+Jexus让C#运行在Linux(centos7_x64),学习笔记

    .h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑 ...

  3. EasyPR--开发详解(5)颜色定位与偏斜扭转

    本篇文章介绍EasyPR里新的定位功能:颜色定位与偏斜扭正.希望这篇文档可以帮助开发者与使用者更好的理解EasyPR的设计思想. 让我们先看一下示例图片,这幅图片中的车牌通过颜色的定位法进行定位并从偏 ...

  4. ValueInjecter----最好用的OOM(以微信消息转对象举例)

    使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...

  5. Entity Framework 6 Recipes 2nd Edition(9-5)译->删除一个断开的实体

    9-5. 删除一个断开的实体 问题 我们要把一个把WCF上取回的对象做上删除的标志. 解决方案 假设我们有如Figure 9-5所示实体的支付与票据的模型. Figure 9-5. 一个支付与票据的模 ...

  6. Objective-C中NSInvocation的使用

    OC中调用方法某个对象的消息呦两种方式: #1. performanceSelector: withObject: #2. NSInvocation. 第一个PerformaceSelector比较常 ...

  7. 提高(Android)开发效率的工具与网站

    Dev_Tools 写这篇不是为了"水",是因为有些工具确实不错,但是换个电脑要找到或者在某个时候你想用但是你只知道存在了书签里.然后就只能下载chrome然后登录账户同步书签了. ...

  8. 游戏服务器菜鸟之C#初探四游戏服务

    经过多次折腾之后,在一次进行了一次重大的重构,去解决问题 主要重构如下 1.将原来的单一协议修改多协议进行,一些查询.认证的功能都采用HTTP进行,避免全部采用TCP链接资源的消耗: 2.原来单一的部 ...

  9. Android学习路线

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...

  10. Handler系列之原理分析

    上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...