《网络攻防》 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. php实现头像预览上传功能

    最近在做php第二阶段的项目,需要用到头像上传的功能 我们要完成头像上传功能,一共要写两个php页面,第一个页面我们叫做touxiang.php,第二个页面我们叫做upload.php 1.touxi ...

  2. VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置

    Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...

  3. JNI使用方法

    JNI可以让我们在java代码中调用本地库的功能. 下面记录一下JNI简单的使用方法 创建java端接口 public class JNIIterface { // 导入最终生成的dll文件 stat ...

  4. Android Design Support Library(二)用NavigationView实现抽屉菜单界面

    NavigationView在MD设计中非常重要,之前Google也提出了使用DrawerLayout来实现导航抽屉.这次,在Android Design Support Library中,Googl ...

  5. Android逆向 编写一个Android程序

    本节使用的Android Studio版本是3.0.1 首先,我们先编写一个apk,后面用这个apk来进行逆向.用Android Studio创建一个新的Android项目,命名为Jhm,一路Next ...

  6. 5,注释、分支结构、循环结构、伪“选择结构”

    注释: python使用#作为行注释符,使用三引号作为多行注释符 分支结构: if-else: a=int(input("你的成绩是:")) if a>60: print(& ...

  7. mysql 内存统计

    在 mysql 5.5 中实现了类似mysql5.7中performance schema 的内存统计功能. 功能 1 展示mysql层内存总大小. 2 展示mysql层内存使用分布情况. 3 展示每 ...

  8. Oracle EBS INV 更新物料慢

    失效 ICX SELECT FA.APPLICATION_SHORT_NAME, FA.APPLICATION_ID, PI.STATUS, PI.PRODUCT_VERSION, PI.PATCH_ ...

  9. Sql server 账号被锁住:"the account is currently locked out. The system administrator can unlock it."的解决办法(转载)

    今天遇到的问题比较有意思.首先是很久没有打开测试数据库了,今天打开,使用service程序测试的时候出现下面的错误提示:Message: System.Data.SqlClient.SqlExcept ...

  10. CameraAPI中的 自定义照相功能

    前几天的项目需要使用CameraAPI自己定义照相机,之前用过的二维码也要自己写底层代码,于是总结一下使用CameraAPI的几点事项.现在由于JDK7.0及其以上版本的官方文档已经不再推荐使用cam ...