码迷,mamicode.com
首页 > Web开发 > 详细

Exp9 WEB安全基础

时间:2018-05-27 14:44:29      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:基础问题   google   搜索框   SQ   img   HERE   应该   rest   sql   

20155336《网路对抗》Exp9 WEB安全基础

最后一次实验~~The journey is hard, the road is bumpy, but it is very enjoyable.

一、基础问题回答

  • 1.SQL注入攻击原理,如何防御
    • 原理:攻击者把SQL命令插入到网页的各种查询字符串处,达到欺骗服务器执行恶意的SQL命令。
    • 防御:在网页设计时对文本框的输入进行限制,比如说长度限制、不能出现#号等
  • 2.XSS攻击的原理,如何防御
    • 原理:攻击者在可输入域插入一些html或脚本语言使服务器执行那些代码
    • 防御:关键字防御,比如过滤<script>这种敏感词汇,减少被攻击的风险
  • 3.CSRF攻击原理,如何防御
    • 原理:一般人A在登陆后,在自己的主机页面点击的各类请求都是以A的名义发送的,即A有A的权限;攻击者B在网页注入一个恶意的CSRF攻击URL地址,在A点击后,B借用A的身份进行非法操作,即B有了A的权限
    • 防御:1.cookie的保存时间不宜过长;2.服务器要求用户输入相对应的验证码;3.服务器尽量在表单中使用post方法

      二、实验过程记录

开启WebGoat
  • 这一环节看到别人都在为安装JDK抓狂怎么就有点美滋滋呢。终于体会到什么叫做前人种树后人乘凉了,感谢刘老师以及刘老师的虚拟机,为我提供了很多很多的便利,膜拜膜拜
  • 什么是WebGoat:WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授Web应用程序安全课程的。这个应用程序提供了一个逼真的教学环境,为用户完成课程提供了有关的线索。这个环境需要Apache Tomcat和JAVA开发环境的支持。
  • 键入java -jar webgoat-container-7.0.1-war-exec.jar。做实验的时候,要一直保持这个终端处于运行状态。

    技术分享图片

    技术分享图片

  • 可以看出,WebGoat使用的是8080端口。
  • 在浏览器上直接访问8080端口就可以跳转到WebGoat,使用默认账号密码就妥。

    技术分享图片

    技术分享图片

  • 为什么不能直接像Google一样直接把网页翻译过来....

Injection Flaws
  • 左侧有很多种攻击实验,先选一个看似简单的Command Injection来试试
    技术分享图片

  • 题目意思:命令注入攻击对任何参数驱动的站点都构成严重威胁。清理所有输入数据,特别是在OS命令、脚本和数据库查询中使用的数据是很好的做法。要求我们应用程序使用系统命令返回文件的内容。

  • 打开网页的源代码
    技术分享图片

  • 本题我们要改BackDoors.help后面的代码,于是直接搜索BackDoors.help,找到后在其后加入"& netstat -an & ipconfig"
    技术分享图片

  • 加入完成以后敲回车即可.
    技术分享图片

  • 选定刚刚添加的代码选项而后view一下。出现了网络端口使用情况和IP地址,(o゜▽゜)o☆[BINGO!]
    技术分享图片

Numeric SQL Injection
  • 题目意思:尝试注入导致所有天气数据显示的SQL字符串,应用程序从选择框中获取输入,并将其插入到预先形成的SQL命令的末尾。

  • 在搜索框内直接搜索哥伦比亚,然后利用永真式1=1,根据执行SQL
    技术分享图片
    技术分享图片

Log Spoofing
  • 题目意思:利用日志的格式,使用换行等字符,欺骗管理员。可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,例如在User Name文本框中输入hgy%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:

技术分享图片

String SQL Injection
  • 这个表单允许使用者查询他们的信用卡号,使用SQL注入让所有的信用卡号都看得见。
  • 仍然是永真式1=1的或门注入
  • 本题直接在last name中注入Snow‘ OR ‘1‘=‘1
    技术分享图片
  • 这边出现了一点问题,就是点击GO一直没有反应。其实点一下restart重新开始就好了
  • 尝试了一下输入自己名字的关键字,发现没有什么影响。所以就觉得永真式是真的强大,让前面的关键字显得毫无作用
    技术分享图片
LAB: SQL Injection(Stage 1:String SQL Injection)
  • 题目意思:使用字符串SQL注入来绕过身份验证
  • 在这里我们要在password = ‘’这里进行注入,理论上只要pwd = ‘ or 1=1 --。那么执行语句就被改成了:
    select * from User where username=‘’and password =‘’ or 1 = 1 --‘这样就可以登陆任何用户了,密码中输入‘ or 1=1 --
    技术分享图片
  • 在这里,因为源代码里的密码长度最长为8位,改一下限制就好了
Stage 3:Numeric SQL Injection
  • 题目意思:这个就是再上一个的基础上,登陆larry,然后浏览员工的信息点击ViewProfile就可以了
    技术分享图片
  • viewprofile返回的是每次查询到的第一条数据,老板应该是工资最高的,所以为了把老板排到第一个SQL注入排序如下:101 or 1=1 order by salary desc --
    技术分享图片
    技术分享图片
Database Backdoors
  • 先看一下102的用户信息
    技术分享图片
  • 这都是些什么人啊,家里开银行的嘛~~
  • 通过输入sql语句来修改信息内容,比如输入102; update employee set salary=1000000 where userid=102;
    技术分享图片
  • 哎哎写大点,梦里什么都有~
  • 注入一个触发器,触发器内容:102;create trigger backdoor before insert on employee for each row begin update employee set email=‘hgy@hackme.com‘WHERE userid = 102;把所有新注册的用户的email地址改成hgy@hackme.com
    技术分享图片
Blind Numeric SQL Injection
  • 题目意思:盲测,大致就是让你去猜测,然后逐步缩小范围。我们想知道其pin的值,只能去猜测,就像数学里的二分法一样,把区间逐步缩小,最后就确定了一个更加精确的范围。首先我们尝试一下200,101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 200 );
    技术分享图片
  • 注入的代码显示Account number is valid,表示是真的,所以它的范围比100大。那我们就再试试更大一点的2000,101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 2000 );
  • 当我注入2500的时候它发生了变化
    技术分享图片
  • 所以我们大致确定它的范围在2000~2500之间
  • 然后我们打开虚拟机的BRUP,因为8080端口已经被占用,所以我们就再添加一个端口。然后把端口号设为自己刚刚设置的端口号。
    技术分享图片
    技术分享图片
  • 设置查找区间2000~2500,并且为了精准step设置为1
    技术分享图片
  • Options中,选择Start attack开始攻击
    技术分享图片
  • 可以明显发现2364与其他的有明显区别,长得非常可疑,那不妨就把2364输入进行验证,果不其然是正确的。
    技术分享图片

    三、实验总结与体会

Exp9 WEB安全基础

标签:基础问题   google   搜索框   SQ   img   HERE   应该   rest   sql   

原文地址:https://www.cnblogs.com/hxl681207/p/9095914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!