20155318 《网络攻防》 Exp9 Web基础

基础问题

  • SQL注入攻击原理,如何防御
  • 就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
  • 预防:可以在后台控制输入的长度,对于一些特殊符号禁止用户输入
  • XSS攻击的原理,如何防御
  • XSS跨站脚本攻击,是Web程序中常见的漏洞,分三类,存储型XSS、反射型XSS、DOM-XSS.XSS属于被动式且用于客户端的攻击方式,攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
  • 预防:对用户提交的的内容进行可靠的输入验证,在输入到输出的过程中进行过滤、转义
  • CSRF攻击原理,如何防御
  • CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器
  • 对于表单的提交这类操作使用post方法代替get方法,避免使用全站通用的cookie,用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

实验过程

开启WebGoat

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,包含了XSS、线程安全、SQL注入等。

  • 在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat

  • 出现如下信息表示成功

  • 此时不要关闭命令行,打开浏览器访问localhost:8080/WebGoat,登录成功后可进行练习。

XSS注入攻击

  • 1.Phishing with XSS

  • 该实验的目的是读取登录用户的用户名和密码。修改html的源代码,生成一个包含form的html,写一个js将form提交的内容发送给攻击者,用弹窗alert做示例

  • 首先输入编辑的XSS攻击的代码,将这段代码输入到输入框中,点击search出现如下登录框,会显示如登陆框:

  • 在登录框中输入用户名、密码,点击登录后跳出弹框,其中包含用户输入的用户名、密码。

  • 2.Stored XSS Attacks

  • 通过在title中输入代码使用户访问时弹出非预期的内容。在这里我们在title中输入代码<script>alert("你想在页面中显示的内容");</script>

  • 3.Reflected XSS Attacks

  • 将带有攻击性的URL作为输入源,例如依旧输入<script>alert("想要显示的内容");</script>,就会弹出对话框:

  • 这个和上个实验效果类似,但是两者所用的原理不一样,上一例存储型XSS是持久化的,代码是存储在服务器中,而这个实验中用的是反射型XSS攻击是非持久化的,一般来说存储型XSS攻击危害更大。

CSRF攻击

  • 4.CSRF攻击

  • 跨站请求伪造这个实验的目的是通过邮件的方式伪造一个转账请求。我们需根据题目里给出的数值参数来输入代码,在文本框中写入<iframe src="attack?Screen=题中给出的scr&menu=题中给出的menu&transferFunds=转账金额"></iframe>

  • 具体的参数可以参照右边的参数栏

  • 提交后,会看到一个新的消息。点击它,用户的5000元就会被转走

  • 5.绕过CSRF确认(CSRF Prompt By‐Pass)

  • 网页中所有手动发起的请求操作,其实质是通过 HTML+JavaScript 向服务器发起请求。

    我们的目标是给新闻组发送一封带有多个威胁请求的 Email

  • 查看页面右边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)

  • 在正常的参数提交过程中,添加恶意的代码,往往能够得到以外的收获,比如执行系统命令。

  • 点击firebug,调试网页源代码。在所请求的页面源代码中添加"& netstat -an & ipconfig"

  • 点result后出现了网络端口使用情况和IP地址。

  • 7.日志伪造(Log Spoofing)

  • 通过注入恶意字符串,按照规则伪造出一条日志,目的是使用户名为“admin” 的用户在日志中显示“成功登录”。在Username输入```lxy%0d%0aLogin Succeeded for username: admin``,其中%0d是回车,%0a是换行符。

  • 8.String SQL Injection

  • 先随意输入一个用户进行查询

  • 和数字sql注入相同,输入' OR '1'='1,也就是当1=1时输出信息,又由于1=1为恒等式,所以所有的用户信息都会被输出。

  • 9.Numeric SQL Injection

  • 先查询一下不攻击的情况

  • 需要尝试追加一个总是解析为true的SQL语句,拦截POST请求,用101 or 1=1替换101,将语句替换为SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代码如下图所示:

  • 攻击后即可查询全部城市天气

  • 10.Blind Numeric SQL Injection

  • 在输入框随意输入一个数字,运行后发现返回Account number is valid,说明这个数是合法的

  • 构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );根据返回结果判定合法范围

  • 判断2363

  • 判断2364

  • 使用二分法进行测试,确定值是2364,输入2364后破解成功

实验总结

  • 本次实验在Webgoat平台上完成,通过命令注入、日志欺骗、数据库后门等方式,进行网络攻击。本次实验较为简单,选取了10个进行记录,在实验过程中遇到的问题,通过查询网上资料和参考其他同学的博客都得到一一解决。这次实践加深了我对这门课的认识,有很强的实用性~

20155318 《网络攻防》 Exp9 Web基础的更多相关文章

  1. 《网络攻防》Web基础

    20145224陈颢文 <网络攻防>Web基础 基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览 ...

  2. 20145237《网络攻防》Web基础

    基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览器可以解析运行什么语言: 超文本标记语言:HTML: 可扩展 ...

  3. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  4. 《网络攻防》Web安全基础实践

    20145224陈颢文 <网络攻防>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御: 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数 ...

  5. 20145326蔡馨熤《网络对抗》—— Web基础

    20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...

  6. 20155305《网络对抗》Web基础

    20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  7. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...

  8. 20155311《网络对抗》Web基础

    20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  9. 20145216史婧瑶《网络对抗》Web基础

    20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...

随机推荐

  1. 使用Git上传代码到Github仓库

    准备工作: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可: http ...

  2. Android--播放Gif的取巧办法

    由于做的项目,要有个动画的等待效果,第一时间想到的就是Gif(懒,省事),但是试了好多据说能播放Gif的控件,也写过,但是放到魅族手机上就是不能播放,所有就想了个招,既然Gif能在浏览器上播放,那an ...

  3. C#/Net定时导出Excel并定时发送到邮箱

    一.定时导出Excel并定时发送到邮箱   首先我们先分析一下该功能有多少个小的任务点:1.Windows计划服务 2.定时导出Excel定指定路径 3.定时发送邮件包含附件   接下来我们一个个解决 ...

  4. linq not in 查询

    想要的sql: select A.* from BL_BCSS_Invoice A join BL_BCSS_OfflineInvoice B on A.ID!=B.InvoiceID; 不知道如何写 ...

  5. entityFramework 中decimal精度缺失问题

    在entityFramework中,decimal精度默认为2位数,当要设置的精度大于2位并且数据库中设置的decimal精度大于2位时,则将数据保存在数据库中后两位的小数内容将强制为00 解决方案: ...

  6. kettle数据同步

    通过kettle实现两张表的数据同步,具体设计如下:

  7. 【Alpha 冲刺】 3/12

    今日任务总结 (未完成) 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 完成API文档编写 已完成App端api,Web端api还在持续 时间紧 孙浩楷 理解掌握在线编辑插件使用 加深了对所 ...

  8. redis 持久化与备份策略

    持久化(persistence) 本文是 Redis 持久化文档 的中文翻译. 这篇文章提供了 Redis 持久化的技术性描述,推荐所有 Redis 用户阅读. 要更广泛地了解 Redis 持久化,以 ...

  9. BZOJ3105:[CQOI2013]新Nim游戏(线性基,贪心)

    Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴 ...

  10. PHP实现微信发红包功能2

    <?php class wxPay { //配置参数信息 const SHANGHUHAO = "1430998xxx";//商户号 const PARTNERKEY = & ...