20145309李昊《网络对抗技术》实验9 web安全基础实践
本实验在同学帮助下完成
一、实验准备
1.0 实验目标和内容
- Web前端HTML。能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
- Web前端javascipt。理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
- Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
- Web后端:编写PHP网页,连接数据库,进行用户认证
- 最简单的SQL注入,XSS攻击测试
2.0 实验问题的回答
(1)SQL注入攻击原理,如何防御
攻击原理:构造符合填入语句的攻击代码,将其输入录入框,以达到自己期望的请求,比如跳过验证,直接登录。
成因总的来说是代码编写不够严密:
- 数据库组织类型不够完善
- 不当的类型处理
- 转义字符的应用漏洞
- 最重要的是错误处理不严谨
防御方法:利用输入规则限制进行防御,不允许特殊字符输入
(2)XSS攻击的原理,如何防御
攻击原理:跨站脚本攻击,XSS攻击类似于SQL注入攻击,将攻击代码注入到网页上或者数据库存储里面,在访问网页或者执行网页上功能是就会触发,实现攻击。
防御方法:
对于用户输入的攻击,只允许输入合法的值,其它值一概过滤掉。
加强对于
另外:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
(3)CSRF攻击原理,如何防御
XSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
- 用户浏览并登录信任网站A
- 验证通过,在用户处产生A的Cookie
- 用户在没有登出A网站的前提下,访问危险网站B
- B要求访问第三方站点A,发出请求,
- 根据B的请求,浏览器带着Cookie访问A
- A不知请求从哪里发出的,所以A会根据自己权限处理5,这样B就收到了模拟用户操作的目的
防御措施:
通过验证码来检测用户提交,每次访问都需要一个新的验证码
也可以通过强制使用户无法同时访问其他网页的方式来达到目的(代价有点大,不实际)
二、Injuection Flaw
1、webgoat开启
输入:java -jar webgoat-container-7.0.1-war-exec.jar
开启,直到出现:

打开浏览器,进入localhost:8080/WebGoat

完成开启
2、SQL字符串注入 String SQL Injection

进入训练区,首先进行SQL字符串注入的练习:

查看这个目标,全英文的,让我们通过构造输入,达到可以查看所有信用卡号的目的。
注意到,题目让我们试试smith:

史密斯的帐号就出来了,这不是重点,重点是要通过构造输入来达到越过"where"的效果:
语句为:SELECT * FROM user_data WHERE last_name = 'Smith'
参考上一次的实验,使用永真式,得到:
SELECT * FROM user_data WHERE last_name = ''or 1='1
将一条语句改成两条,所以我们需要填入:'or 1='1

3、日志欺骗 Log Spoofing
日志欺骗,利用日志的格式,使用换行等字符,欺骗管理员:

题意让我们用管理员的身份进去:
用CR (%0d) 或者 LF (%0a)的方式使用换行符,达到成功的效果。
事实证明,%0d与%0a都可以起到成功换行效果。只不过我后面那个%0a有点多余了,但照样成功了。
4、数字型SQL注入 Numeric SQL Injection

这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据。
但是难点在于,并没有输入,这下怎么办呢
用burpsuite,首先读取执行的SQL值,再对属性值进行修改,达到目的。

打开,
进入“Proxy”的“Options”
点击add,默认是8080端口被占用时需要添加一个新的端口8888
接下来对浏览器进行设置,依次进入:
preference-advanced-settings
将设置中,监听的端口改掉
到这里,就建立好了捕获包的工具,所有数据都会通过这里。
回到webgoat,点击GO,再返回查看:

看到出现了一些数据,将其发送到repeater:

根据执行SQL
SELECT * FROM weather_data WHERE station = 101
注入SQL
SELECT * FROM weather_data WHERE station = 101 or 1=1
就修改这个station的位置为 101 or 1=1

5、命令注入 Command Injection
同上面一样,也没有输入框,所以还是用找出其命令再注入的办法,用上次用到的burpsuit:
同刚才一样抓包:

在提交的位置添加&netstat -a命令,第一个引号用来封闭前一个命令,最后一个用来闭合结尾的引号。
点击 go 之后实验成功:

6、数据后门 Database Backdoors

要求实现多条SQL语句注入,对于这样有输入框的,破解的方法就比较简单了

7、LAB SQL injection

分析:由于输入项只有一个,也就是密码,但是密码应该是密文传输,所以我们直接用burpsuit。
抓包,得到:

将GUEST该为永真式,点击GO 实验成功:
下面的STEP3,也参照数字注入:
另外两步 step2 和 step4,由于平台不同做不了。
所以到目前为止,注入部分就全部完成了:

三、XSS练习
1、跨站脚本钓鱼攻击(Phishing with XSS)
主旨是要我们编写一个钓鱼网站的页面。
攻击,将传来的username和password写入log文件:
登陆界面,输入用户名和密码:
然后保存至/var/www/html中的lyd.log文件中
2、储存型XSS(Stored XSS Attakcs)

这是一个擦除输入的练习。
思路是 发送一个信息,当用户收到这个信息时,就会触发在其中的恶意代码(用脚本语言写的),从而达到清除cookie的效果。
构造语句<script>alert(document.cookie);</script>
输入后点击20145309
弹窗说明可清除cookies

完成该攻击
四、XSCF练习
1、Cross Site Request Forgery (CSRF)
你的目标是发一个email给newsgroup,内容包括一个有恶意URL请求的图片。URL要指向“attack”(包含参数“Screen”和“Menu”,还有一个额外参数“transferFunds”)。当收到含有CSRF页面的邮件时,就会执行transferFunds
2、CSRF Prompt By-pass
网页上的手动发起请求的操作,是通过HTML+JavaScript向服务器请求,在这道题目中,我们需要在文本框中添加两个语句,一个用于请求用户转账,另一个用于触发确认界面。
这个实验的实现跟上个很类似,所以直接这样完成就行了:
haha
<img src='attack?Screen=465&menu=900&transferFunds=5314'5314 width='1' height='1'>
<img src='attack?Screen=465&menu=900&transferFunds=CONFIRM' width='1' height='1'>
完成:

最后,这一部分的完成情况为:



实验感想
这次实验内容包括很多,由于我学艺不精,自己不是很好的独立完成,在这里感谢茹翔组长的帮助,几乎是手把手教了我。
20145309李昊《网络对抗技术》实验9 web安全基础实践的更多相关文章
- 20145231熊梓宏 《网络对抗》 实验9 Web安全基础实践
20145231熊梓宏 <网络对抗> 实验9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? •SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面 ...
- 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础
2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...
- 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13
<网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...
- 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...
- 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...
- 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...
- 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...
- 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...
- 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础
2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...
随机推荐
- 前端开发组件化设计vue,react,angular原则漫谈
前端开发组件化设计vue,react,angular原则漫谈 https://www.toutiao.com/a6346443500179505410/?tt_from=weixin&utm_ ...
- php 实现栈结构
一.栈的定义及知识 1.定义:栈又称为栈或者堆叠,是计算机科学中的一种特殊的串列形式的抽象数据类型,特殊之处在于只允许在链表或者数组的一端(堆栈顶端指针,又称 "top")加入数据 ...
- Area---poj1265(皮克定理+多边形求面积)
题目链接:http://poj.org/problem?id=1265 题意是:有一个机器人在矩形网格中行走,起始点是(0,0),每次移动(dx,dy)的偏移量,已知,机器人走的图形是一个多边形,求这 ...
- webstorm添加调试nodejs
打开run菜单选择Edit Configurations 展开defaults菜单,选择nodejs 点击+按钮,选择Node.js,出现下面弹出框. 点击ok保存
- [python-opencv]超大图像二值化方法
*分块 *全局阈值 VS 局部阈值 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape ...
- Redis主从同步及哨兵原理
1.复制过程 复制过程大致分为6个过程: 流程图如下: 1)保存主节点信息 执行slaveof后从节点只保存主节点的地址信息便直接返回,这时建立复制流程还没有开始,在从节点执行info replica ...
- Shell初学(二)变量及数组
精简版: 定义:your_name=123 PS:=符号左右不能有空格! 使用:${your_name},单独使用变量时可以不加{} 只读:readonly your_name PS:设置 ...
- Git:pull --rebase 和 merge --no-ff
首先是吐嘈 如果你正在 code review,看到上图(下文将称之为:提交线图)之后,特别是像我这样有某种洁癖的人,是否感觉特别难受?如果是的话,请看下文吧 :) 为什么 Git 作为分布式版本控制 ...
- Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子(转载)
1. 究竟是怎么运行的? 很多的博客里大量的讲了什么是RDD, Dependency, Shuffle.......但是究竟那些Executor是怎么运行你提交的代码段的? 下面是一个日志分析的例子, ...
- [py][mx]django分页第三方模块django-pure-pagination
前台的这些数据都是从后台取来的 分页模块django-pure-pagination - 一款基于django pagination封装的更好用的分页模块 https://github.com/jam ...