登录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. MONO x64 amd_x64

    SharpPcap 是一个.NET 环境下的网络包捕获框架,基于著名的 pcap/WinPcap 库开发.提供了捕获.注入.分析和构建的功能,SharpPcap 还是一个跨平台的库,可以在Mono/. ...

  2. Mono+Jexus部署C# MVC的各种坑

    如果你看到这篇文章,先别急着动手,过完一遍,确定是你要的再动手. 别人提到的这里不赘述,只说查了好久才知道的. 1号坑:System.IO.FileNotFoundException Could no ...

  3. 入园记------我的DBA之路

    今天周一拖着疲惫的身躯 11点才离开公司,回到家估计写完这篇博客就要17号了. 一个人走在回家的路上,很黑,突然很多感触,一个人在北京拼搏,不敢停止学习的脚步,因为只要停下来就会感觉到孤独. 回顾一下 ...

  4. 当前端也拥有 Server 的能力

    今天看了不少文章,比较感兴趣的是 Cache API.它是浏览器 Request/Response 的缓存管理工具,其使用风格和运用场景让我瞬间联想到了 ServiceWorker 和 Fetch A ...

  5. 检验你的前端基础——Sit the test

    前端小学生向大家推荐一个网站:Sit the test.如果你是一名前端工程师或者立志于此,不妨试试此网站上面的测验题. 发现 十几天前,我在奇舞周刊的一篇文章中,发现了一个国外的技能测试网站:Sit ...

  6. Android动态改变布局

    遇到这么个需求,先看图:      其实是一个软件的登录界面,初始是第一个图的样子,当软键盘弹出后变为第二个图的样子,因为登录界面有用户名.密码.登录按钮,不这样的话软键盘弹出后会遮住登录按钮(其实之 ...

  7. ios 常见问题解决

    一,libxml/HTMLparser.h file not find 第一种方法: 点击左边项目的根目录,再点击右边的Build Settings,手工输入文字:“Header search pat ...

  8. spring mvc DispatcherServlet详解之前传---FrameworkServlet

    做项目时碰到Controller不能使用aop进行拦截,从网上搜索得知:使用spring mvc 启动了两个context:applicationContext 和WebapplicationCont ...

  9. SpringMVC一路总结(一)

    SpringMVC听闻已久,早在去年就被学长问到关于SpringMVC的基础知识,当时也没在意.主要是工作中也没有用到关于SpringMVC的技术,因此免于没有时间和精力的借口就没有接触和学习Spri ...

  10. 【分布式】Zookeeper客户端

    一.前言 前篇博客分析了Zookeeper的序列化和通信协议,接着继续学习客户端,客户端是开发人员使用Zookeeper最主要的途径,很有必要弄懂客户端是如何与服务端通信的. 二.客户端 2.1 客户 ...