zoukankan      html  css  js  c++  java
  • XSS注入学习

    引贴:

    http://mp.weixin.qq.com/s?__biz=MzIyMDEzMTA2MQ==&mid=2651148212&idx=1&sn=cd4dfda0b92ab6a88cc9e4ee9feea32d&chksm=8c21542ebb56dd38ac073112df40dfd2e76e824be33b5045cf63b35e74578a53ae909111d844&scene=1&srcid=0913HLl2cBggRZa1jldZPE8t#rd

    一定使用firefox来学习

    首先开启apche和mysql,我的虚拟机安装的是lampp集成环境

    然后到WEB根目录创建一个测试的php文件

    然后键入以下代码

    然后使用火狐访问:
    http://192.168.30.208/xsstest.php/?title=Hello%20World%20Mululu Test

    其中 ?title=Hello%20World%20Mululu Test 这一段是传入一串参数

     看看效果:

     

    看看抓取的源代码:

    注意Title部分和正文content......的上面,我们不管给GET参数title赋值什么,这两处都是相同的。

    如果假设我们输入了一个<p>a</p>会发生什么呢?

    我们看到title变成了<p>a</p>,正文的标题也成了<p>a</p>,但是为什么我们的HTML没有执行呢?

    我们来看下源代码就懂了:

    在title标签之间的<p>a</p>确实是<p>a</p>,但是在正文的h1标签之间的<p>a</p>却是:&lt;p&gt;a&lt;/p&gt; 

     这个正文处的<p>a</p>没被浏览器渲染,我们也就认了吧,因为在源代码里根本就不是<p>a</p>。但是这个title标签之间的<p>a</p>没被渲染是怎么一回事呢?

    原因很简单,这是因为title标签之间的内容会被显示在浏览器的tab页内,<p>标签在title标签之间没法执行怎么办?

    我们闭合</title>这样再在后面写代码就可以了

    这个就理解为 我们通过参数注入进去的代码 被执行了
    这一点很简单 但是却很重要 
    因为如果这样子注入的代码可以被执行 那就意味着我们还可以注入更坏的东西

    比方说这样:
    http://192.168.30.208/xsstest.php/?title=test%3C/title%3E%3Cscript%3Ealert(/XSS/);%3C/script%3E

    效果如下:

    于是我们就一步一步控制了这个页面的行为 那我们还可以更坏
    比方说我们可以钓个鱼:
    http://192.168.30.208/xsstest.php?title=TITLE%3C/title%3E%3Cscript%3Evar%20a%20=%20prompt%28%27%E5%AF%86%E7%A0%81%E5%B7%B2%E7%BB%8F%E8%BF%87%E6%9C%9F%EF%BC%8C%E8%AF%B7%E9%87%8D%E6%96%B0%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81%27%29;alert%28a%29;%3C/script%3E

     

    太可怕了。。。。。。。

    其实XSS是属于Code Injection的一种。就和SQL注射一样都是属于Code Injection漏洞,只是Injection的代码不同,SQL注射注射的是SQL语句,XSS则是注射的HTML和JS的语句。

  • 相关阅读:
    识别IE11浏览器
    国庆过后老革命
    有些东西再忙也要做
    云计算
    SVN下Update出现代码文件删除状态问题
    如何避免历史回退到登录页面
    CodeSmith连Oracle
    NHibernate直接执行SQL进行插入
    nhibernate实体类主键ID赋值问题
    NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
  • 原文地址:https://www.cnblogs.com/mululu/p/6371370.html
Copyright © 2011-2022 走看看