20155209 林虹宇 Exp9 Web安全基础
Exp9 Web安全基础
XSS
1.Phishing with XSS
跨站脚本攻击,在表单中输入超文本代码
在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上。
攻击成功
2.Stored XSS Attacks
- 存储型XSS攻击
在信息栏中输入一段js代码,提交之后,让点击这个评论的人触发xss
结果
3 Reflected XSS Attacks
- 反射型XSS攻击
- 在enter your three digit access code:处输入一段简单的js代码。
CSRF
4 Cross Site Request Forgery(CSRF)
此题是要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
在信息栏中输入恶意代码
- 点击提交
成功
5 CSRF Prompt By-Pass
- 此题包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
先进入转账请求地址
- 点击confirm
修改语句进入成功地址
SQL
6 Command Injection
在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上"& netstat -an & ipconfig":
选中修改项,点击view
出现网络连接情况
7 Numeric SQL Injection
- 要显示全部的天气信息,观察数据库语句是要搜索station来显示相应的信息。
通过修改station选择的语句,然后让它没有选择,直接全部显示。
所以修改之后,点击Columbia提交,实际上提交了一个永真式。
全部显示,成功。
8 Stage 1:String SQL Injection
这是老师上课演示的题目,知道密码的输入长度被限制,所以先修改html代码。
修改之后输入’ or 1=1 --密码
登陆成功。
9 Stage 3:Numeric SQL Injection
课上演示实验中用到了burpsuite,所以这个实验中的登陆就先用一下burpsuite。
然后修改html代码,使提交数据的时候,提交到后台的员工号变成查找那个工资最高的员工号,然后显示工资最高的也就是老板的账号信息。
10 String SQL Injection
这个非常简单,选择语句都已经给好了,直接输入' or 1=1 --
获取成功
问题回答
- SQL注入攻击原理,如何防御
- SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
- 防御:1.检查变量数据类型和格式,前端js检查是否包函非法字符。2.过滤特殊符号,对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。3.绑定变量,使用预编译语句,MySQL的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法。
- XSS攻击的原理,如何防御
- XSS分三类,存储型XSS、反射型XSS、DOM-XSS。
存储型XSS:数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击。
反射型XSS:将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击。
DOM-XSS:纯粹发生在客户端的XSS攻击。 - XSS防御—输入输出的过滤和数据转义
- 输入:客户端求情参数:包括用户输入,url参数、post参数。
- 输出:即使在客户端对用户的输入做了过滤、转义,攻击者一样可能,通过截包,转发等手段,修改你的请求包体。最终还是要在数据输出的时候做数据转义。
- CSRF攻击原理,如何防御
- CSRF全称 Cross Site Request Forgery, 跨站域请求伪造。
- 攻击过程:1假设abc用户登录银行的网站进行操作, 同时也访问了攻击者预先设置好的网站.2abc点击了攻击者网站的某一个链接,这个链接是http://www.bank.com/xxxx指向银行,银行服务器会根据这个链接携带的参数会进行转账操作.3银行服务器在执行转账操作之前会进行SESSION验证是否登录, 但是由于abc已经登录了银行网站,攻击者的链接也是www.bank.com.所以攻击的链接就会携带session id到银行服务器.4由于session id是正确的,所以银行会判断操作是由本人发起的,执行转账操作.
- 两种防御手段
- referer 验证
- 根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,-执行转账操作的post请求www.bank.com/transfer.php应该是点击www.bank.com网页的按钮来触发的操作,这个时候转账请求的referer应该是www.bank.com.而如果黑客要进行csrf攻击,只能在自己的网站www.hacker.com上伪造请求.伪造请求的referer是www.hacker.com.所以我们通过对比post请求的referer是不是www.bank.com就可以判断请求是否合法.
- token 验证
从上面的样式可以发现,攻击者伪造了转账的表单,那么网站可以在表单中加入了一个随机的token来验证.token随着其他请求数据一起被提交到服务器.服务器通过验证token的值来判断post请求是否合法.由于攻击者没有办法获取到页面信息,所以它没有办法知道token的值.那么伪造的表单中就没有该token值.服务器就可以判断出这个请求是伪造的.
实验体会
本次实验是最后一次实验了,本次实验借助webgoat实现对web的攻击,实现对数据库安全上的攻击,对html前端代码的攻击,也有使用burpsuite对发送的数据包进行截取修改再发送。理解了对网站的一般攻击步骤,同时也学到了对于不同的攻击应该如何防范。
20155209 林虹宇 Exp9 Web安全基础的更多相关文章
- 20155209林虹宇逆向及Bof基础实验报告
20155209林虹宇逆向及Bof基础实验报告 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符 ...
- 20155209 林虹宇 Exp 8 Web基础
Exp 8 Web基础 Web前端HTML 正常安装.启停Apache kali本机自带apache,上个实验已经使用过,直接使用 查看80端口. 127.0.0.1 编写一个含有表单的html 在浏 ...
- 20155209林虹宇 Exp7 网络欺诈防范
Exp7 网络欺诈防范 简单应用SET工具建立冒名网站 kali要作为web服务器让靶机访问冒名网站,所以要使用阿帕奇web服务器软件. 要阿帕奇使用80端口.进入配置文件/etc/apache2/p ...
- 20155209林虹宇Exp4 恶意代码分析
Exp4 恶意代码分析 系统运行监控 使用schtasks指令监控系统运行 新建一个txt文件,然后将txt文件另存为一个bat格式文件 在bat格式文件里输入以下信息 然后使用管理员权限打开cmd, ...
- 20155209 林虹宇 Exp3 免杀原理与实践
Exp3 免杀原理与实践 使用msf生成后门程序的检测 将上周msf生成的后门文件放在virscan.org中进行扫描 结果很危险 使用msf编码一次进行扫描 使用msf编码10次进行扫描 结果同样很 ...
- 20155209 林虹宇Exp2 后门原理与实践
Exp2 后门原理与实践 实验内容 一.使用netcat获取主机操作Shell,cron启动 使用netcat获取主机操作Shell Win获得Linux Shell 查看win的ip地址 windo ...
- 20155209林虹宇 Exp6 信息搜集与漏洞扫描
Exp6 信息搜集与漏洞扫描 1.信息收集 1.1通过DNS和IP挖掘目标网站的信息 whois查询 进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务 ...
- 20155209林虹宇虚拟机的安装及一点Linux的学习
预备作业3 虚拟机的安装 首先,我先了解了一下Linux和安装虚拟机的有关常识. Linux:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支 ...
- 20155208徐子涵《网络对抗》Exp9 Web安全基础
20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...
随机推荐
- 2018-10-17 22:20:39 c language
2018-10-17 22:20:39 c language C语言中的空白符 空格.制表符.换行符等统称为空白符,它们只用来占位,并没有实际的内容,也显示不出具体的字符. 制表符分为水平制表符和垂 ...
- Java虚拟机(三)垃圾标记算法与Java对象的生命周期
前言 这一节我们来简单的介绍垃圾收集器,并学习垃圾标记的算法:引用计数算法和根搜索算法,为了更好的理解根搜索算法,会在文章的最后介绍Java对象在虚拟机中的生命周期. 1.垃圾收集器概述 垃圾收集器( ...
- GDI+编程(画笔/画刷/路径/区域)
构造Graphics对象 Graphics类是GDI+程序设计的核心,Graphics类能够完成大部分的绘图,文本输出,几何图形的填充及坐标系统的转换等各种操作.在功能上,它与GDI的设备环境(DC) ...
- 2016年度最受欢迎的100个 Java 库
[编者按]本文作者为 Henn Idan,主要介绍基于 GitHub 中的数据分析,得出的2016年度最受欢迎的100个 Java 库.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 谁拔得 ...
- Innodb页面存储结构-2
上一篇<Innodb页面存储结构-1>介绍了Innodb页面存储的总体结构,本文会介绍页面的详细内容,主要包括页头.页尾和记录的详细格式. 学习数据结构时都说程序等于数据结构+算法,而在i ...
- winform中容器是如使用的
1.容器 (1)FlowLayouPanel 普通容器[内部流式布局] (2)Groupbox 带有标题的普通容器[内部普通布局,超出范围隐藏] (3)Panel 普通容器[内部普通布局,超出范围隐藏 ...
- 实战分析: MySQL字符集
原创: 吴炳锡 MySQLBeginner 实战分析: MySQL字符集说明 在本文中讨论以下几个问题: 1. GBK和UTF8占用几个字节 2. ASCII码在不同字符集中占用几个字节 3. MyS ...
- Python通过LDAP验证、查找用户(class,logging)
定义一个类,用于初始化ldap连接,验证.查找用户等功能 # -*- coding: UTF-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...
- crontab 命令使用
什么是crontab? crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. ...
- Redis缓存穿透、缓存雪崩、redis并发问题分析
把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数据量很大的时候,经典的几个问题如下: (一)缓存和数据库间数据一致性问题分布式环境下(单机就不用说了)非常 ...