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

一、实验后回答问题

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

    • 原理:

      • 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    • 防御:
      • 检查变量数据类型和格式只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式,这样很大程度上可以避免SQL注入攻击。
      • 过滤特殊符号:对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。
      • 绑定变量,使用预编译语句:MySQL的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法
  2. XSS攻击的原理,如何防御:
    • 原理:

      • 恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。
    • 防御:
      • 一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤
      • 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
      • 严格执行字符输入字数控制,因为XSS代码往往很多,所以要对字符数进行控制
  3. CSRF攻击原理,如何防御:
    • 原理:

      • 跨站请求伪造,攻击者盗用了你的身份,以你的名义发送恶意请求。
      • CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账
      • 造成的问题包括:个人隐私泄露以及财产安全。
    • 防御:
      • 验证码
      • 可以在某些敏感操作过程中,加入验证码,以确认用户身份
      • Token:CSRF能攻击成功,根本原因是:操作所带的参数均被攻击者猜测到。既然知道根本原因,我们就对症下药,利用Token。当向服务器传参数时,带上Token。这个Token是一个随机值,并且由服务器和用户同时持有。当用户提交表单时带上Token值,服务器就能验证表单和session中的Token是否一致。

二、实验总结与体会

  • 这次实验是最后一次实验,可以说是肥肠激动了,就要结束了,想想就开心,不过抛过国考不说,还是挺happy的。
  • 可是这个实验让我有点恼,步骤众多,异常繁琐,不得已借助了大佬博客的帮助,多方借鉴参考,终于完成了。
  • 虽然这次实验开始做的时候挺难的,开始练题目都看不懂,还好有百度机翻帮了大忙。
  • 做到最后,其实发现本次的实践难度还可以吧,主要是忘了太多的网页开发编程和SQL语句时硬伤,但是其实本门课程还挺有意思的。
  • 在这次实践里最能体现的就是看老板工资那次,还得想到老板肯定是挣得最多的,感觉很贴近现实吧,学起来没那么空乏就感觉好理解一些。

三、实践过程记录

1. 安装WebGoat 8.0:

  1. WebGoat是干嘛的?

    • WebGoat是故意不安全的web应用程序由OWASP旨在教给web应用程序安全性。你可以安装与WebGoat和实践。在每一堂课中,用户必须证明他们对安全问题的理解WebGoat 应用程序利用一个真正的脆弱性。例如,在一个教训的用户必须使用SQL注入偷假信用卡号码。应用程序旨在提供一个现实的教学环境,为用户提供提示和代码进一步解释其中的教训。
  2. 安装:
    • 经过多方位的走访,我发现这个WebGoat是一个不存在的网站,就和YouTube一样,我们无法访问下载,所以,这篇博客到此为止,本次实验就此结束。

    但是怎么可能呢?作为电科院的一名学生,求知探索是永恒不变的追求,所以这个时候就要“了”(不过听说有人被网警发短信警告了······兄弟们要是我没了,要记得我)我把“”得来的文件上传到百度云盘,不想或者不会“***”小伙伴可在这儿下载,密码: ss37

    • 输入命令 java -jar webgoat-server-8.0.0.M14.jar
    • 打开浏览器,地址栏输入 127.0.0.1:8080/WebGoat ,注册用户,即可正常使用。

      2. 练习:

      SQL注入部分:

  3. Injection Flaws
    输入提示姓名会得到相关信息:

    使用上一次实验用过的万能公式就得到了所有人的信息:

    同样输入一个永真式,数字注入,得到所有人的信息:

    下一个:本题要求通过Smith的信息联合得到Dave的密码,根据提示信息可以得到存储用户密码的表名为 user_system_data,列为password。

    输入 Smith' order by 7--Name ,即可得到正确的反馈信息

    根据以上信息,输入Smith' union select null,null,null,null,null,null,null from user_system_data -- 获取Dave的密码,输入密码:

  4. BurpSuite:
    kali中的搜索应用程序BurpSuite,启动,配置本机BurpSuite,在 Proxy->Option```` 中选择add``` 添加项:

    设置浏览器,进行代理:
  5. Cross-Site Scripting
    第一步是要求你在一个购物车支付界面面找到优惠券的代码,给你自己打折,我们查看网页源代码,找到判断优惠券的函数:

    查看优惠券的值:PLATINUM

    第一步,在支付界面输入优惠券代码:

    第二步要求全单免费,将数值改为0。

  6. Numeric Injection
    要求能够显示所有地方的天气,需要修改网页代码。搜索Columbia,找到value,修改value=“101 or 1=1”,目的是注入一个永真式。
  7. String SQL Injection
    通过注入实现免密码登录,直接修改长度限制,进行注入:

    密码栏输入 ' or 1=1 --
  8. Numeric SQL Injection
    用员工账号登陆,通过SQL注入来查看老板的账户信息:
    用上一步的方法进入员工账号:

    修改源代码,将value值改为 101 or 1=1 order by salary desc -- ,点击viewprofile键:
  9. String SQL Injection
    SQL注入查看所有人的信息:
  10. Log Spoofing
    通过注入恶意字符串,伪造出一条日志:在username输入:zh%0d%0aLogin Succeeded for username: admin

  11. Database Backdoors
    在输入userid的地方输入 101; update employee set salary=20155334

    建后门:注入语句 101;creat TRIGGER lxmBackDoor BEFORE insert on employee FOR EACH ROW BEGIN update employee SET email='20154305@besti.edu.cn' WHERE userid = NEW.userid
  12. Blind Numeric SQL Injection
    构造输入语句 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 ); ,根据返回的语句是否合法判断pin值的范围。


    根据返回结果可知,pin值小于3000大于2000,使用二分法,直到最后结果是2364:

Cross-Site Scripting (XSS)部分:

  1. Phishing with XSS
    在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给 http://localhost:8080/WebGoat/catcher?PROPERTY=yes

    输入用户名和密码,结果:

  2. Stored XSS Attacks
    此题用户A可以任意输入,然后用户B点击用户A的留言,触发XSS,title可以任意输入,Message输入消息,可以嵌入一段js代码,用户点击后即可触发,例如输入: <script>alert("Welcome Qsss");</script>

  3. Reflected XSS Attacks
    enter your three digit access code 处输入 <script>alert("Qsss attack succeed!");</script>

Cross Site Request Forgery(CSRF)部分:

在Message里输入恶意代码: <iframe src="attack?Screen=282&amp;menu=900&amp;transferFunds=6666"></iframe>

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

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

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

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

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

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

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

    20155321 <网络攻防> Exp9 Web安全基础 基础问题 SQL注入攻击原理,如何防御 原理:在事先定义好的SQL语句的结尾上添加额外的SQL语句(感觉一般是或上一个永真式),以 ...

  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. 语义SLAM的数据关联和语义定位(三)

    与现有方法的异同 特征点SLAM中的数据关联 先回忆一下特征点SLAM中,我们是如何处理数据关联的.下面以ORBSLAM为例. 在初始化部分,我们通过特征描述子的相似性,建立两帧之间的特征点关联,然后 ...

  2. 用ContentProvider获取通讯录联系人

    手机中的联系人数据实际是保存在数据库中的,但Android并没有让我们通过操作数据库去读取数据,而是通过一个ContractProvider这个应用提供了一个ContentProvider访问接口. ...

  3. Vue + Spring Boot从零开始搭建个人网站(一) 之 项目前端Vue.js环境搭建

    前言: 最近在考虑搭建个人网站,想了想决定采用前后端分离模式 前端使用Vue,负责接收数据 后端使用Spring Boot,负责提供前端需要的API 就这样开启了我边学习边实践之旅 Vue环境搭建步骤 ...

  4. View的layout机制

    View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 源代码分析 在View的源代码中, ...

  5. Hive分组取Top N

    Hive在0.11.0版本开始加入了row_number.rank.dense_rank分析函数,可以查询分组排序后的top值   说明: row_number() over ([partition ...

  6. Webpack打包报"JavaScript heap out of memory"错误

    问题 开发项目有一段时间了,随着项目越来越大,打包的时间也相应的变长了,打包时的内存也增多了.这时候产生了一个问题,在发布项目的时候,会出现JavaScript heap out of memory错 ...

  7. Gson解析复杂JSON字符串的两种方式

    JSON解析可以使用的库: JSONObject(源自Android官方). Gson(源自Google). Jackson(第三方开源库). FastJSON(第三方开源库). 本文例子使用Goog ...

  8. Percona Xtradb Cluster的设计与实现

    Percona Xtradb Cluster的设计与实现   Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi ...

  9. 调整 Windows VM 的大小

    本文说明如何使用 Azure Powershell 调整在 Resource Manager 部署模型中创建的 Windows VM 的大小. 创建虚拟机 (VM) 后,可以通过更改 VM 大小来扩展 ...

  10. svn Please execute the 'Cleanup' command. 问题解决

    1由于使用svn 更新文件出错,导致svn中断,然后就一直循环出现  ‘’Please execute the 'Cleanup' command‘’ 问题: 查找网上方案 . 有使用sqlite3 ...