典型****Web攻击

1.实验内容与环境

1.1实验内容

SQL注入、XSS、CSRF、文件上传、目录遍历(SQL注入必做,其它四选一)。可以基于如下实验环境,也可以百度“实验楼”等实验环境,或采用google hacking方式在网上找“合适的”目标系统(适可而止)。SQL注入若只是“万能钥匙”方式登录目标系统,则成绩为及格,适当进一步攻击(可以借助啊D等工具),则可获中等及以上成绩,最高境界是SQL注入至获取数据库表内容。

1.2实验环境

操作系统:Windows10

CPU:I7-8450H

内存:8G

1.3实验平台

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

DVWA共有十个模块,分别是:

1.Brute Force(暴力(破解))

2.Command Injection(命令行注入)

3.CSRF(跨站请求伪造)

4.File Inclusion(文件包含)

5.File Upload(文件上传)

6.Insecure CAPTCHA (不安全的验证码)

7.SQL Injection(SQL注入)

8.SQL Injection(Blind)(SQL盲注)

9.XSS(Reflected)(反射型跨站脚本)

10.XSS(Stored)(存储型跨站脚本)

1.4实验环境配置

*1.4.1下载并安装XAMPP*

XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,包含 MySQL、PHP 和 Perl 的 Apache 发行版。由于DVWA是基于PHP/MySQL环境开发的,而单独下载配置PHP/MySQL环境比较繁琐,因此可以通过下载安装XAMPP集成软件来搭建PHP/MySQL环境,下面介绍XAMPP在Windows下的下载和安装。

首先在XAMPP官网(https://www.apachefriends.org/download.html)下载适合自己系统版本的安装包,如下图所示

下载完成之后双击进行安装,安装界面如下所示,一直点击NEXT就可以。

打开XAMPP Control panel选择自己相应需要的服务点击star就可以

在DVWA的官网(http://www.dvwa.co.uk/)下载DVWA的安装包,下载得到的是一个压缩包,将压缩包解压至xampp的安装目录下的htdocs文件夹下,并将解压后的文件夹重命名为DVWA,结果如下所示

然后进入DVWA文件夹,将DVWA\config目录下的配置文件去掉.dist后缀名,编辑config.inc.php文件,如下图所示

由于刚开始实验不知道启动哪个,就全部启动了一遍

然后进入浏览器搜索localhost/dvwa进入配置界面,首先要把上面所有的红色disabled全部全程绿色的,然后才能点击create/Reset Datebase

点击XAMPP Control Panel的Apache的config进行配置

之后如果还报错,需要修改权限,可以登录http://localhost/phpmyadmin

之后点击Create就可以成功了

*登陆账号是:admin 密码是:password*

2.SQL注入实验

2.1low

源码解析

isset()函数在php中用来检测变量是否设置,该函数返回的是布尔类型的值,即true/false

$_REQUEST用来收集HTML表单提交的数据,点击‘submit’按钮提交表单数据

query变量为直接构造的sql查询语句,没有对用户的输入进行任何的过滤,导致sql注入的存在。

result通过mysqli_query()函数获取数据库查询的结果集。die()函数表示连接数据库失败退出当前脚本。$GLOBALS["___mysqli_ston"]表示数据库的连接语句

mysqli_fetch_assoc($result)从结果集中取出一行作为关联数组,即列名和值对应的键值对。

最后通过while判断若有查询结果且循环执行$row = mysqli_fetch_assoc( $result ),将结果集中每行结果对应的字段值赋值给相应的字段,并遍历输出。

mysqli_close() 函数关闭先前打开的数据库连接。

$GLOBALS["___mysqli_ston"]表示数据库的连接语句

被包围在

 标签 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

or (x or y)如果 x和 y有且仅有一个为 true,则返回 true

输入1时,有回显,是正常的

*2.1.1********判断是否存在注入及注入类型*

在User ID中输入1,点击Submit查看结果

一直输入1-5是正常显示的,6是没有提示,说明没有第六个用户

判断是否存在注入点

首先输入“1 and 1=1”,查询成功

当输入“1 and 1=2”的时候,查询成功

由上图可知查询仍然成功,故不存在数字型注入点。

下面判断是否存在字符型注入点,在User ID中输入1’and ‘1’=’1并点击Submit

查看结果是正常的

可以看出返回正常的查询结果,接着在User ID中输入1’and ‘1’=’2并点击Submit,查看结果,这个地方与老师给的学长的实验报告测试不符合,可能是因为自己环境版本不一样或者数据更新了。

User ID中输入1’and ‘1’=’1’并点击Submit

*2.1.2********SQL查询语句中的字段数*

使用命令:1’ or 1=1 order by 1 # 、 1’ or 1=1 order by 2 # 、1’ or 1=1 order by 3 # ,查询成功。#是注释符号

当输入“1’ or 1=1 order by 1 #”时,查询成功

输入1’ or 1=1 order by 2 #,查询成功

当输入1’ or 1=1 order by 3#,查询失败

由上面的结果可以得知执行的SQL查询语句中只有两个字段,即这里的First name、Surname。

*2.1.3********确定显示的字段顺序*

在User ID中输入1’ union select 1,2 #,点击Submit,查询结果如下所示:

上图的结果说明执行的SQL语句为select First name,Surname from 表 where ID=’id’…

*2.1.4********获取数据库名称、用户*

在User ID中输入1’ union select 1,database() #,点击Submit,查询结果如下所示:

上述结果说明当前使用的数据库为dvwa

*2.1.5获取数据库中的表*

在User ID中输入1’union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #,点击Submit,查询结果如下所示:

上述结果说明数据库dvwa中一共有两个表,分别为guestbook与users

*2.1.6********获取表中的字段名*

在User ID中输入1’union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’ #,点击Submit,查询结果如下所示:

一共有8个字段:user_id, first_name, last_name, user,password, avatar, last_login, failed_login

*2.1.7********获取数据*

在User ID中输入1’or 1=1 union select group_concat(user_id,
first_name,last_name),group_concat(password) from users #,点击Submit

查询结果如下所示:

猜测密码MD5加密处理,所以找了一个在线MD5解密网站进行解密

解密账号与密码对应:

user_id password
1 password
2 abc123
3 charley
4 letmein
5 password

2.2MEDIUM

源代码解析:

Medium级别的代码利用mysql_real_escape_string函数对特殊符号\x00,\n,\r,,’,”,\x1a进行转义,同时前端页面设置了下拉选择表单,希望以此来控制用户的输入。

$_POST接受表单以POST方式传递过来的变量

mysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。

mysqli_error() 函数返回最近调用函数的最后一个错误描述。

is_object() 函数用于检测变量是否是一个对象。如果指定变量为对象,则返回 TRUE,否则返回 FALSE。

$_mysqli_res可能是其中的一个定义,有可能是res=result

mysqli_connect_error() 函数返回上一次连接错误的错误描述。

*2.2.1********判断是否存在注入点*

使用burpsuite抓包来进行演练,因为设计到主机的IP地址所以图片进行打码操作,害怕被攻击抓包更改参数id为1’ or 1=1 #,查询报错:

修改抓包参数id为1 or 1=1 #,查询成功:

说明存在数字型注入。(由于是数字型注入,服务器端的mysql_real_escape_string函数就形同虚设了,因为数字型注入并不需要借助引号)

*2.2.2********查询sql查询语句中的字段数*

抓包更改参数id为1 order by 2 #,查询成功

抓包更改参数id为1 order by 3 #,查询报错:

说明执行的sql查询语句中只有两个字段,即这里的First name、Surname

*2.2.3********确定显示的字段顺序*

抓包更改参数id为1 union select 1,2 #,查询成功:

*2.2.4********获取当前数据库*

抓包更改参数id为1 union select 1,database() #,查询成功:

说明当前的数据库为dvwa

*2.2.5********获取数据库中的表*

抓包更改参数id:

1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

查询成功:

说明数据库dvwa中一共有两个表,guestbook与users

*2.2.6********爆出数据*

抓包修改参数:

id为1 or1=1unionselectgroup_concat(user_id,first_name,last_name),group_concat(password) from users #,该操作依然需要MD5进行解密,查询成功:

这里就爆出users表中所有的用户的user_id,first_name,last_name,password的数据。

*2.3High*

$_SESSION 存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量

LIMIT 1 limit N:返回N条记录

is_null() 函数用于检测变量是否为 NULL。如果指定变量为 NULL,则返回 TRUE,否则返回 FALSE。

*2.3.1********漏洞利用*

抓包更改参数: id1’ or1=1unionselectgroup_concat(user_id,first_name,last_name),group_concat(password) from users #

该操作依然需要MD5解密

查询成功:

需要特别提到的是,High级别的查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转,这样做的目的是为了防止一般的sqlmap注入,因为sqlmap在注入过程中,无法在查询提交页面上获取查询的结果,没有了反馈,也就没办法进一步注入

2.4Impossible

**3.**XSS(DOM)

Dom型XSS是一种XSS攻击,其中攻击的代码是由于受害者浏览器页面的DOM树而执行的特殊的地方就是代码攻击(payload)

在浏览器本地修改Dom树而执行,并不会将payload上传到服务器,这也使得DOM型XSS比较难以检测

3.1****Low

简单难度没有参数过滤,直接修改下拉框上传参数的值

源码解析:

default=<script>alert(/xxx/)</script>

3.2MEDIUM**:**

medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。这里还使用了stripos 用于检测default值中是否有 <script,如果有的话,则将 default=English

过滤了

闭合标签构造xss事件

3.3High

high级别的代码先判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。这样的话,我们的语句就没有可能插入到页面中了。

查看服务器端源代码

default=只允许是French、English、German、Spanish、这几个通过。(采用了白名单过滤)

方法:

default=English#</option></select><imgsrc=""nerrοr=alert(/xss/)></option>

3.4****Imposs

**4.**XSS Flected

xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。

4.1low

可以看到系统直接使用了name参数,没有做任何过滤

<script>alert(/xxx/)</script>

4.2MEDIUM**:**

 

元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

可以看到,medium级别的代码只是在low级别上增加了对于的过滤,并没有什么卵用,我们可以直接大写绕过.

源码解析:

使用了str_replace来把

方法一:<sc

方法二:

典型Web攻击(网络空间安全实训)相关推荐

  1. Cisco网络技术基础实训

    实验名称:Cisco网络技术基础实训 一. 实验需求(100分) 1.拓扑如下图所示,设备名称跟拓扑使用的端口号必须跟拓扑所示一致.(5分) 2.IP地址规划,如图所示(x-班级号,y-学号.比如17 ...

  2. 网络服务器系统管理实训报告,网络系统管理与维护实训报告-20210726103142.docx-原创力文档...

    .可修编. .可修编. 网络系统管理与维护综合夹加|课程实训报告 学生学号:65 学生XX: 2013年12月 实训1络用户与资源管理 实训1 络用户与资源管理 实训目的 实现网络用户与资源管理 实训 ...

  3. 计算机专业与电子商务问卷,电子商务-实验报告书3-《实训3 网络调研问卷实训》...

    实训三调研问卷设计 一.任务描述 请自拟题目或项目设计一份调研问卷.具体要求:1问卷要完整,应包括标题.说明词.填表说明和正文四个部分:2.问卷的题目设计要合理,不少于20道题目,其中问题的形式应多样 ...

  4. 网络渗透测试实训周笔记3.0

    1.代码审计概念 代码审计,是对应用程序源代码进行系统性检查的工作.目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险. 代码审计不是 ...

  5. 企业网络组建项目实训--交换机的配置与管理(下)

    任务四 三层交换机实现不同VLAN间互访 信科上海分公司的财务部和客服部位于同一楼层,两个部门被划分在不同VLAN中,现在想通过三层交换机使这两个部门实现通信,网络拓扑图如下图.具体操作如下: 步骤1 ...

  6. Educoder -- Web程序设计基础2021秋 --实训作业全总结

    博主会持续更新的呦! web程序设计基础R实验报告 2021年 1.Web前端开发概述 edu–Web程序设计基础2021秋–[Web前端开发概述][HTML5基础] 2. HTML5 基础 [web ...

  7. java聊天室测试_Java网络聊天室实训能力测试

    1填空题(2*12=24,每空2分).1)C/S结构是指___客户机/服务器_____,请例举除网络聊天室之外的基于C/S结构的应用程序____________________.2)套接字(socke ...

  8. 思科网络搭建综合实训1

    根据上面网络拓扑图完成下面内容: 各种设备的连接. 注意:各设备之间用什么线连接,连接的端口是什么,要搞清楚. 个人计算机,交换机,路由器基础配置. 注意:个人计算机主要配置IP地址和网关及DNS地址 ...

  9. linux系统管理员的家目录是,最新linux网络操作系统与实训 课后习题答案汇编...

    1.5 练习题 一.选择题 1. Linux 最早是由计算机爱好者B 开发的. A. Richard Petersen B. Linus Torvalds C. Rob Pick D. Linux S ...

最新文章

  1. 力邀安卓为鸿蒙效力,期末阅读题答题秘籍2
  2. pg 时间戳 能与整数比较大小吗_小学数学55组重要知识“顺口溜”+必考题型口诀,一遍就能记住!...
  3. 【反射的使用】java反射的复习
  4. react学习(48)--编辑回显用moment处理
  5. 手把手教你怎么给客群分级(上)
  6. 网络安全之Bot学习笔记
  7. 给浏览器添加油猴插件 and 如何使用
  8. python2.7实现简单日记本,兼容windows和linux
  9. echarts上加横线标线_Echarts地图添加引导线效果(labelLine)
  10. 又一次回归,再一次记录
  11. Endnote使用笔记01:如何在Endnote 20中导入GB/T7714-2015引文格式
  12. python英文发音-用Python写一个背英文单词程序
  13. strcmp和==比较
  14. js小学生图区_js 图片区域可点击,适配移动端,图片大小随意改变
  15. 【爬虫】学习:aiohttp异步爬取
  16. CS224d lecture 14札记
  17. 计算机毕业设计asp.net的高校科研项目管理系统(源码+系统+mysql数据库+Lw文档)
  18. javascript简繁转换函数
  19. iphone换android系统更新不了,苹果支持安卓以旧换新,却被批心不诚,你会用安卓换苹果吗?...
  20. Elasticsearch宝典:从ELK到Elastic Stack

热门文章

  1. 公路村村通 (30 分)
  2. CSS 图片边框的处理
  3. vs2010 安装va
  4. 朗沃20140426
  5. html快速添加物料信息,http://800015671.114.qq.com/ndetail_324.html 2 物料、备品的计划请领单及供船情况;'...
  6. 00000_开张大吉
  7. CSS项目之浮雕风按钮
  8. 彻底理解scheduleAtFixedRate 与 scheduleWithFixedDelay
  9. 三本计算机考研985211,三本考985、211研究生会被卡吗?
  10. [书目20080124]做个好丈夫的9大准则