且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

DVWA系列之2 low级别SQL注入

更新时间:2022-09-16 23:19:43

将Security level设为on,在左侧列表中选择“SQL Injection”,然后在右侧的“User ID”文本框中输入不同的数字就会显示相应的用户信息。

我们首先需要判断这里所传输的参数是文本型还是数字型,分别输入3和1+2,观察它们显示的结果并不一致,因而就判断出参数类型是文本型。

点击页面右下角的“View Source”可以查看源代码,其中最重要的是如下图所示的两行语句:

DVWA系列之2 low级别SQL注入

第一行是以GET方式获取用户通过id参数传来的值并赋值给变量$id。

第二行是将select语句的查询结果赋值给变量$getid,select语句的作用是从users表中查找first_name和last_name两个字段的值,条件是user_id字段的值与用户输入的值相符。

这里我们在文本框中输入“' or 1=1 #”就可以显示users表中的所有数据:

DVWA系列之2 low级别SQL注入

将我们输入的语句代入源码中:

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '' or 1=1 #'";

对于文本型的注入,主要就应考虑引号闭合的问题。#是MySQL中的注释符,它把之后的内容都给禁用了。

下面我们练习一下之前的手工MySQL注入流程。

首先输入“' union select 1,2 #”判断出字段数量为2,并且两个字段都可以代入参数进行查询。

 DVWA系列之2 low级别SQL注入

输入“' union select user(),database() #”检测出MySQL版本为5.0,当前数据库名为dvwa。

DVWA系列之2 low级别SQL注入

输入“' union select table_name,2 from information_schema.tables where table_schema='dvwa' #”爆出dvwa数据库中有两个表:guestbook、users,其中我们关心的很明显是users。

DVWA系列之2 low级别SQL注入

输入“' union select column_name,2 from information_schema.columns where table_name='users' #”,爆出users表中的字段。

DVWA系列之2 low级别SQL注入

输入“' union select user,password from users #”,爆出用户名和密码。

DVWA系列之2 low级别SQL注入

 

对于MySQL手工注入不熟悉的同学可以参考之前的博文:

MySQL基本操作(PHP注入基础)http://yttitan.blog.51cto.com/70821/1570620

手工SQL注入(PHP)    http://yttitan.blog.51cto.com/70821/1570821


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1718375