low security dvwa--SQL Injection
登录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的更多相关文章
- sqlmap dvwa SQL Injection使用小记
刚刚开始学习sql injection,初步使用sqlmap,使用 GET http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=1&Submi ...
- DVWA SQL Injection 通关教程
SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害巨大,常常会导致整个数据库被“脱 ...
- DVWA SQL Injection(Blind) 通关教程
SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是 ...
- DVWA SQL Injection LOW
最近在学习SQL注入,初出茅庐,就从dvwa开始吧 sql注入可以通过sqlmap工具实现,为了更好地了解原理,这里主要是手工注入 注入的一般流程为: 1,找到注入点,此步骤可通过工具 2,判断注入类 ...
- DVWA SQL Injection High
High 虽然是high等级,但是通过源码审计发现与low等级一样,没有对传入的值做任何过滤,唯一不同的就是点击连接后打开了另外一个对话框,用户在新打开的页面输入 其余的步骤与low级别的一样:htt ...
- DVWA SQL Injection Medium
Mdeium 基本的步骤及知识点在上节已经提到过这里不再赘述:https://blog.csdn.net/WQ_BCJ/article/details/84554777 1)与low级别不同,本次采用 ...
- 【DVWA】SQL Injection(SQL 注入)通关教程
日期:2019-07-28 20:43:48 更新: 作者:Bay0net 介绍: 0x00.基本信息 关于 mysql 相关的注入,传送门. SQL 注入漏洞之 mysql - Bay0net - ...
- SQL Injection (Blind) Low
SQL盲注分析 盲注较普通注入难度会有所增加,根据页面响应不同大概分为以下几种:布尔型盲注:时间盲注:报错注入 普通注入与盲注的对比: 普通注入: ...
- 使用sqlmap注入DVWA的SQL Injection菜单
1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...
- 《11招玩转网络安全》之第四招:low级别的DVWA SQL注入
以DVWA为例,进行手工注入,帮助读者了解注入原理和过程. 1.启动docker,并在终端中执行命令: docker ps -a docker start LocalDVWA docker ps 执行 ...
随机推荐
- appium+robotframework环境搭建
appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...
- 一步步开发自己的博客 .NET版(9、从model first替换成code first 问题记录)
为什么要改用code first 用过code first的基本上都不会再想用回model first或是db first(谁用谁知道).不要问我为什么不一开始就直接使用code first,因为那个 ...
- ASP.NET Web API 过滤器创建、执行过程(一)
ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...
- DAO层,Service层,Controller层、View层 的分工合作
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...
- Chrome在302重定向的时候对原请求产生2次请求的问题说明
这个问题应该确确实实是一个Chrome的BUG,我在自己的编程环境中发现,并在多个服务器,多个编程语言的运行环境,以及多个浏览器下都测试过,都看到有2次请求出现.为了证明不是自己环境的问题,我也特意去 ...
- NodeJs对Mysql封装
之前在学习NodeJs的时候,每次操作数据库都需要连接数据库然后开始写Sql操作,这样非常麻烦,然后自己对Mysql进行了封装,一共100多行代码. github地址: Mysql操作 我在里面对My ...
- DotNet程序配置文件
在实际的项目开发中,对于项目的相关信息的配置较多,在.NET项目中,我们较多的将程序的相关配置直接存储的.config文件中,例如web.config和app.config. .NET中配置文件分为两 ...
- Hive索引功能测试
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 从Hive的官方wiki来看,Hive0.7以后增加了一个对表建立index的功能,想试下性能是 ...
- Node基础篇(模块和NPM)
核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...
- (转)从P1到P7——我在淘宝这7年
(一) 2011-12-08 [原文链接] 今天有同事恭喜我,我才知道自己在淘宝已经七周年了.很多人第一句话就是七年痒不痒,老实说,也曾经痒过,但往往都是一痒而过,又投入到水深火热的工作中去.回家之后 ...