首页 > 其他 > 详细

XSS注入学习

时间:2017-02-06 19:54:55      阅读:318      评论:0      收藏:0      [点我收藏+]

引贴:

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的语句。

 

XSS注入学习

原文:http://www.cnblogs.com/mululu/p/6371370.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!