文档详情

Web安全与防护 实训指南 3.1手动SQL注入.pdf

发布:2025-03-07约2.21千字共4页下载文档
文本预览下载声明

手动SQL注入

【实训目的】

1.理解SQL注入的原理。

2.掌握手动查找注入点的技术。

3.能够利用SQL注入点,暴出表中所有数据。

【实训原理】

SQL注入实质就是利用WEB系统对用户的输入过滤不严的漏洞,输入恶意

代码,重构SQL语句,从而达到注入SQL命令的目的。

【实训步骤】

步骤一、分析SQL注入漏洞所在页面功能。

登录DVWA系统,选择左侧“DVWASecurity”中的low级别,再单击左侧

的“SQLInjection”,出现如下图界面。

图3-2DVWA系统SQLInjection界面

这里有UserID输入框,输入用户ID,点击“submit”按钮,将会显示用户

ID、First_name、Sunname,如我们输入1,则显示ID:1,First_name:admin,

Sunname:admin。根据显示,可以猜测,应用程序的SQL语句:

selectfirst_name,sunnamefrom表名whereID=XX;

或selectfirst_name,sunnamefrom表名whereIDXX;

其中“XX”为用户输入的值。

步骤二、SQL注入漏洞测试。

在输入框中输入“1”,SQL回显报错,显示:“YouhaveanerrorinyourSQL

syntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortheright

syntaxtousenear1atline1”。

报错原因是单引号没有闭合,初步可以判断这里存在SQL注入点。

我们通过单引号及注释符号重构SQL语句进行测试。

在UserID输入框中输入“1#”,提交后会有如下显示:

图3-3DVWA注入1#语句结果图

说明该页面存在字符型SQL注入漏洞,原SQL语句为:

selectfirst_name,sunnamefrom表名whereIDXX;

输入“1#”后,SQL语句被重构变为:

selectfirst_name,sunnamefrom表名whereID1#;

即程序中的第一个单引号和输入的单引号配对,而程序中原先的第二个单引

号被#注释,失去作用。因此回显内容的first_name、sunname与输入1内容是一

致的。

步骤三、暴出表中的所有数据。

在UserID输入框中输入1or1=1#

此时,将会有如下回显,暴出了表中的所有数据。

图3-4DVWA被暴库的结果图

当输入1or1=1#时,SQL语句变为:selectfirst_name,sunnamefrom表名

whereID1or1=1#;

此时“1=1”始终为真,真与任何值相或计算始终为真,因此显示该表中所

有行的相关信息。

步骤四、利用语句orderbynum测试查询信息列数。

利用“orderby1”、“orderby2”、“orderby3”、……猜测查询信息的列

数。

在输入框中输入“1orderby1#”

图3-5DVWA注入orderby命令的结果图

此时SQL语句变为:selectfirst_name,sunnamefrom表名whereID1order

by1--;即以第一列查询值进行排序。

当输入“1orderby2#”时和第一种情况是一样的。但当输入“1’orderby

3#”时,出现“Unkowncolumn3inorderclause”,即“在order子句中不存在3

列”,说明查询的数据有2列。

【实训总结】

通过实验可以看到

显示全部
相似文档