热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20172018220155225《网络对抗技术》实验九Web安全基础

20172018220155225《网络对抗技术》实验九Web安全基础WebGoat1.StringSQLInjection题目是想办法得到数据库所有人的信用卡号,用Smith登录

2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础

WebGoat

1.String SQL Injection

题目是想办法得到数据库所有人的信用卡号,用Smith登录后,得到Smith的两个信用卡号,如图

技术分享图片

但如何才能得到所有人的信用卡号呢?

只需要输入‘ or 1 = ‘ 1,这样构造可以将引号闭合,再or上一个永真式,就能屏蔽掉前面的条件。

2、Log Spoofing

在User Name中以这种格式注入:Use CR (%0d) and LF (%0a) for a new line。比如输入20155225jzy%0d%0aLogin succeeded !

技术分享图片

3、Numeric SQL Injection

这个题目也是要得到数据库全部天气数据,但没有一个可以输入的文本框怎么办呢?

技术分享图片

查看页面源代码,在输入下拉框中,向后台提交value值,所以只需在后面加上or 1=1 永真式即可。

技术分享图片

登录成功:

技术分享图片

4、Command Injection

还是可以用修改页面源码的方法。在后面加上能够在目标主机上执行的命令:"& netstat -an & ipconfig"

技术分享图片

可见直接改变了下拉框选项,里面出现了我们希望系统执行的命令。

技术分享图片

成功:

技术分享图片

5、Stage 1:String SQL Injection

开始我们想在密码框输入‘ or 1=1 --注入,但是失败了。查看网页源码发现,对密码框输入进行了限制。

技术分享图片

修改密码限制之后,成功登录:

技术分享图片

6、XPATH Injection

这是一个职员私人数据查询系统,我们的目的是看到其他职员的信息。

技术分享图片

XPath 是一门在 XML 文档中查找信息的语言。除了在输入1 = 1以外,还需要选择一个XML节点,输入‘a‘ = ‘a。

所以只需在User Name输入20155225jzy‘ or 1=1 or ‘a‘=‘a

在Password输入20155225jzy即可成功获得所用员工信息。

7、Blind String SQL Injection

技术分享图片

使用盲字符串SQL注入进行爆破,感觉这个好难啊,不太明白逻辑,所以去看了一下答案。

解决方法是通过将一个布尔表达式注入到预脚本SQL查询中来找出名称。

首先是和H比较:101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) <‘H‘ );返回false并显示无效账号。

变成<‘L‘ 会返回true,这样我们就知道这个字母是在H和Lz之间。再经过几次查询就能判断出第一个字母是J。

同理,最终可以推出用户名是Jill。

8、Phishing with XSS

技术分享图片

用XSS和HTML注入,在搜索框注入下面这段html:


  




This feature requires account login:



Enter Username:

Enter Password:




然后会看到一个可以输入用户名密码的表单,直接点击登录。WebGoat会将输入的信息捕获并反馈回来,攻击成功。

9、Stored XSS Attacks

这是存储型XSS攻击。在Title里输入学号,在Message里输入攻击成功。

技术分享图片

10、Cross Site Request Forgery(CSRF)

写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。如图:

技术分享图片

技术分享图片

基础问题回答

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

SQL注入攻击值得是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一下组合,

通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。

预防方法:

1、首先要对输入的数据进行过滤,将常见的sql语句的关键词:select or ‘ " 等字符进行过滤。

2、对在数据库中对密码进行加密,验证登陆的时候先将 密码进行加密再与数据库中加密的密码进行对比,若此时一致则基本是安全的。

3、对数据库中密码采用常用的MD5加密时尽量在字符串的前边和后边加上指定字符后在进行加密,这样即便是看到了数据库也很难破解密码。

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

XSS是Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。  

  XSS攻击的主要目的则是,想办法获取目标攻击网站的COOKIE,因为有了COOKIE相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。预防措施,防止下发界面显示html标签,把等符号转义
  
  预防方法:
  
  当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” <> & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

3、XSRF攻击原理,如何防御

技术分享图片

预防方法:

(1).COOKIE Hashing(所有表单都包含同一个伪随机值):

这可能是最简单的解决方案了,因为攻击者不能获得第三方的COOKIE(理论上),所以表单中的数据也就构造失败了:在表单里增加Hash值,以认证这确实是用户发送的请求。然后在服务器端进行Hash值验证

  (2).验证码

  这个方案的思路是:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串。

  (3).One-Time Tokens(不同的表单包含一个不同的伪随机值)
  

总结

通过这次实验,我了解到web攻击的一些基本内容,也感受到web安全有很广阔的探索空间,希望以后还会有机会继续学习。

2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
author-avatar
DZ2017
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有