实验项目 | SQL注入 |
---|---|
综合性实验 | 2020年9月25日 |
创建VMWARE虚拟机 的Windows环境,
在虚拟机中安装phpstudy,并搭建DVWA环境,通过学习web工作原理与SQL注入工作原理,能够实现简单的SQL注入验证。
Vmware
DVWA
phpStudy
Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据。
Web服务器的工作流程:
1)用户做出一个操作,可以是填写网址敲回车,可以是点链接,接着通过浏览器获取事件。
2)浏览器通过TCP三次握手与服务器程序连接
3)浏览器将用户事件按照HTTP格式打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
4)浏览器确认对端可写,并将该数据包推入internet,该包经过网络最终递交到服务器程序。
5)服务端拿到该数据包后,同样以HTTP协议格式解包,解析客户端的意图。
6)得知客户端意图后,进行分类处理,或者提供某种文件、或者处理数据。
7)返回结果,将结果装入缓冲区,或是HTML文件、或是一张图片等。
8)按照HTTP协议格式将返回结果的数据包进行打包处理。
9)服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。
10)浏览器拿到包后,以HTTP协议格式解包,然后解析数据,如:是HTML文件
11)浏览器将HTML文件展示在页面上。
Web服务器最主要的功能就是提供静态文件。日常的上网浏览大多为网页浏览。在GET请求下的文本服务器工作原理如下:
主要步骤基本不变,只有第1)步、第6)步和第7)步有些不同。
第1)步:当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。
第6)步:服务程序解包后,确定其为GET请求,并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在,再确定该路径的文件是否可以获取。
第7)步:
7-1) 如果请求的路径有误,或者该资源不能被用户获取,则返回错误提示页面。很多服务器的错误页面只有404,更专业的应该是将错误分类并返回对应的错误代码页面。
7-2) 如果该路径合法且文件可以被获取,那么服务程序将根据该文件类型进行不同的装载过程,记录其类型作为(8)中HTTP协议中对应的返回类型,并加入响应头。
语言分类:编程语言大致可以分为两类,一类是解释性语言,一类是编译型语言;解释性语言是一种在运行时开始解释的源代码,将代码解释为机器可以识别的指令,机器对识别的指令进行执行,是一种边运行边执行的程序语言;而编译语言是一种生成代码时直接将其转化成机器指令,可以由计算机直接运行的程序语言。二者的主要区别:前者是边执行边编译,后者是一次性编译完成,直接运行即可。
在解释性语言中,当程序与用户交互,用户就可以构造特殊的输入来拼接到程序中执行,从而使得程序依据用户输入拼接到SQL语句中,执行了与原计划不同的行为,从而产生了SQL注入漏洞。
1)用户可以输入
2)输入的内容与数据库有交互,即用户输入的内容会拼接到SQL语句当中执行,若没有防护措施的情况下,就存在SQL注入漏洞。
1)登录SQL语句 select * from admin where username=’用户输入的用户名’and password=’用户输入的密码’。
2)用户输入的内容可由用户自行控制,可以是SQL语句中的关键字或者符合SQL语句结构的语句。例如可以输入’or 1=1 –-空格
3)SQL语句 select * from admin where username=’’or 1=1—‘and password=’用户输入的密码’其中or 1=1永远为真 ,–注释后边的内容不再执行,因此SQL语句执行会返回admin表中的所有内容。
1)环境搭建与软件安装
安装虚拟机软件Vmware
通过win7文件夹下的镜像在虚拟机中安装Windows7操作系统
下载安装phpstudy
百度网盘提取DVWA—master.zip压缩包,解压后将其拷贝到phpstudy pro下的WWW目录下。
2)在Windows7操作系统的C:\phpstudy_pro\WWW\DVWA-master\config目录下,找到config.inc.php.dist文件并对其进行以下修改。将默认密码p@ssw0rd修改为root,保存,并将文件后缀名改为.php,即将原文件名的.dist去掉。
3)开启PHPstudy,并打开Apache2.4.39和MySQL5.7.26
4)登录DVWA
方法一:进入命令提示符界面,利用ipconfig命令查找本机的IP地址,用浏览器访问查询到的IPv4地址
方法二:使用浏览器访问http://127.0.0.1/DVWA/index.php
注:此处127.0.0.1为我的主机的IPV4地址
方法三:使用浏览器访问http://localhost/dvwa-master/index.php
显示如下界面说明登录成功
5)DVWA包含10个模块,每个模块的代码都有4中安全等级:Low、Medium、High、Impossible。通过从低难度到高难度的测试并参考代码变化可更快的学习理解漏洞的原理。
在左侧选择DVWA Security,将Security Level等级设置为Low
点击左侧的“SQL Injection”进入“user ID”界面
点击最下边的“View Source”按钮,进入SQL Injection Source界面
ID: {$id}"; } mysqli_close($GLOBALS["___mysqli_ston"]); } ?>
First name: {$first}
Surname: {$last}
根据以上代码可知,可以利用$id变量的漏洞进行sql 注入。
6)SQL注入:
a.向userID文本框中输入查询字符串1=1or1=1
URL网址变成了:
http://localhost/dvwa-master/vulnerabilities/sqli/?id=1%3D1+or&Submit=Submit
b.获取数据库信息如猜测是否后台应用程序将此值看做了字符型,User ID输入:1’or’1’=’1,点击“submit”按钮后页面跳转如下:
以上结果表明:该操作遍历了数据库中的所有内容。
以上结果表明:该操作遍历了数据库中的所有内容,若是重要的数据库,可能这个信息已经对于攻击者有了足够的意义。
7)测试查询信息的列数,利用语句order by num
输入“1’order by 1-- ”(只需输入引号中的内容不需要加引号,需要注意的是在“–”之后需要输入一个空格)结果页面正常显示如下:
输入“1’ order by 2-- ”(同样只需输入引号中的内容,无需输入引号,在“–”之后需要输入一个空格),显示结果如下:
输入“1’ order by 3-- ”(同样只需输入引号中的内容,无需输入引号,在“–”之后需要输入一个空格)显示结果如下:
点击“submit”按钮提交后,页面跳转到如下界面:
原来使用 windows7操作系统自带的IE浏览器,点击View Source按钮,没有任何反应,并不能进入正确的界面。通过百度学习,得知可能和浏览器的加载项设置等有关,经过一番对HTML源码的探寻并没有得到想要的结果;后来,通过下载火狐浏览器尝试才显示出想要的内容。
返回页面不存在,或者显错。 这就表示有文本型的注入漏洞。如上面输入“1’ order by 3-- ”命令,显示如下界面表明存在SQL注入漏洞。
1)简单SQL注入原理的理解
在sql注入中,使用单引号是为了让id闭合;
在“–”之后输入空格是因为:数据库语句中注释语句的语法规则
2)相关软件的了解
Apache(阿帕奇)是世界使用排名第一的文本服务器软件,因其跨平台和安全性而被广泛使用。
DVWA是一个基于PHP/MySql搭建的Web应用程序,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助Web开发者更好的理解Web应用安全防范的过程。
3)DVWA包含一共十个模块:
Bruce Force//暴力破解
Command Injection//命令注入
CSRF//跨站请求伪造
File Injection//文件包含
File Upload//文件上传漏洞
Insecure CAPTCHA//不安全的验证
SQL Injection//sql注入
SQL Injection(Blind)//sql注入(盲注)
XSS(Reflected)//反射型XSS
XSS(Stored)//存储型XSS
4)DVWA的每个模块都有4种安全等级:Low、Medium、High、Impossible,通过从低难度到高难度的测试并参考代码变化可帮助学习者更快的理解漏洞原理。