• Exp9 Web安全基础


    一、实践目标

    1. 理解常用网络攻击技术的基本原理。
    2. 在Webgoat,实践相关实验。
    • SQL注入攻击
    • XSS攻击
    • CSRF攻击

    二、实践过程

      环境配置:

      下好jar包然后放在根目录下

      使用:java -jar *.jar就可以解压运行webgoat了!

      使用webgoat:

      打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat

      我使用的是7.1版本,直接使用网页下的两个用户密码就行,我使用的管理员登陆的。

      sql注入:

      Numeric SQL Injection:

      要求注入字符串然后可以访问所有的天气情况:

      这里修改一下网页源代码就好了,随便选个城市然后修改他的value值,添加or 1=1 即可;

      

      String SQL Injection:

      要求作为smitn然后查看所有的信用卡信息:

      输入or 1=1 --

      --是注释掉后面的代码。

      

      

      LAB: SQL Injection:

      第一步:

      字符串注入:要求不使用正确密码就可以登陆管理员的账户,和前面一样,但是我们要先修改网站源代码

      使其在password一项中可以输入足够长:

      

      然后构造真式即可

      第三步:

      Numeric SQL Injection:

      先使用第一步的办法登陆员工的账户,然后再员工账户里点击查看按钮时查看管理员用户的信息

      我们先看看这个老板账户的值是排在表的最后:

      

      然后就可以通过修改id为101 or 1=1order by salary desc这个语句来倒序查询下一个用户信息;

      下图就是修改位置,本来一开始想直接修改成老板的id但是不成功;

      

      成功图:

      

      

      Blind Numeric SQL Injection:

      

      数字盲注:要求就是通过输入框输入语句去查找到pins表里pin的值是多少:

      因为这里在输入框里输入语句可以进行判断,会给出判断结果,所以使用

      101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500);

      然后慢慢缩小范围即可:

      

      找到最后的结果为2364:

      

      Blind String SQL Injection:

      和数字盲注差不多,这里是找字符串,语句就有所变化:

      101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );

      意思是查找这个name的第一个字符的值是不是h

      这里有大小写区分,然后改变第一个1所在位置的值就是改变查找的字符串的字符位置;

      第一个字符为J

      

      第二个为i

      

      

       XSS:

      

      Phishing with XSS:

       要求使用XSS和HTML插入,将html插入到该请求凭证中,添加javascript来实际收集凭证

      就是在输入框里输入一段攻击html代码,然后会运行脚本实施钓鱼攻击,会给原网页添加一些输入框,比如用户名和密码

      这样原本不需要输入的东西就被要求输入然后就可以窃取到了!

      这里就是在search框里加入了代码,然后提交,就会出现新的输入框,然后输入用户名密码,用javascript弹框出来就完了:

      

      Stored XSS Attacks:

      这里就是相当于有人放了一段恶意的脚本放在别人可以浏览的地方,比如微博评论,留言等等,然后只要有人打开这个留言就会

      执行脚本实施攻击:

      标题随便取,内容就是简单的弹框:

      

      LAB: Cross Site Scripting:

      第一步:

      就是编辑员工信息页面,然后在里面能写下最够长的选项里,这里选的地址一栏,还可以是地区一栏,

      往里面写下脚本,然后别人来查看就会运行脚本。

      

      第三步:

      和上一步一样就是查看别的账户信息然后被攻击:

      第五步:

      执行反射的xss:这里应该是要求执行一段带有url,也就是能连接到另一个站点的脚本,但是我看大家好像都只是随便执行了一段脚本,

      这个带url我也是不太清楚,先通关再说:

      

      

      Reflected XSS Attacks:

      和上面一样,要求当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,

      攻击者可以使用攻击脚本制造一个URL,然后提交到另一个网站、发邮件或让受害者点击。

      主要就是这个脚本代码方面。

      

      Cross Site Request Forgery (CSRF):

      要求:给新闻组发邮件。电子邮件包含一个URL指向恶意请求的图像。在这节课中,URL应该指向“攻击”servlet,

      其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具有任意的数值。

      这里其实就说明了编写规则,只要查看网页上给出的scr和menu的值即可:

      标题随便,在内容里写<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>

      然后提交,打开消息就行了:

      

      

      CSRF Prompt By-Pass:

      要求:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示

      根据提示来编写,也是需要查看网页的几个值:

      然后编写成下面的代码即可:

      <img src="attack?Screen=1471017872&menu=900&transferFunds=6000"
      width="1" height="1">
      <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
      width="1" height="1">

      

      CSRF Token By-Pass:

      也是要求编写代码,构造好了,然后发送,点击即可

      

      

    三、实验总结:

      最后一次实验了,这种闯关的感觉还不错,再就是确实这么课可以说是大学这几年里最有乐趣的一门课了。

      

  • 相关阅读:
    字典或者数组与JSON串之间的转换
    银联支付 支付代码
    iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;
    iOS 直接使用16进制颜色
    iOS 添加view的分类(更加方便的设置view的位置)
    iOS 中UITableView的深理解
    Swift 中调试状态下打印日志
    手把手教React Native实战开发视频教程【更新到40集啦。。。】
    React Native 开发
    React-Native学习指南
  • 原文地址:https://www.cnblogs.com/20154317wuhan/p/9136059.html
Copyright © 2020-2023  润新知