- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
01-跨站脚本攻击解析材料之一
跨站脚本攻击解析(一)form action=http://localhost/test.php method=post
input name=name value=scriptalert(123456)/script type=hidden /
input name=ss type=submit value=XSS提交测试 /
/form
点击“XSS提交测试”按钮,你就又会看到浏览器弹出了可爱的对话框?
持久型XSS
持久型XSS(Persistent)又叫做存储XSS(Stored XSS),与非持久型XSS相反,它是指通过提交恶意数据到存储器(比如数据库、文本文件等),Web应用程序输出的时候是从存储器中读出恶意数据输出到页面的一类跨站脚本漏洞。
看个例子。
下图是某BBS程序没有处理发帖正文中的恶意代码就直接存储到数据库中:
然后读帖子的时候程序从数据库中读出数据,结果数据中含有的恶意代码在浏览器执行了(此处仅演示弹出对话框):
这个漏洞是由于程序会把UBB代码[IMG]javascript:alert(XSS)[/IMG]转换成HTML代码:
img src=javascript:alert(XSS) / IE6会解析上面的HTML代码并执行img标签src属性中的JavaScript代码,导致XSS的发生。
持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码),由于不需要浏览器提交攻击参数,所以其危害往往大于非持久型XSS。
跨站脚本漏洞的出现场景
根据数据输出的不同,跨站脚本漏洞一般会出现在以下4个地方,了解了漏洞出现的场景,对我们认识和修复漏洞是有积极意义的。
输出在HTML页面
前面2.3节的PHP代码就是把数据输出到HTML页面的例子。这种情况比较简单,就是把传入的参数值直接显示在页面,主要就是传入的参数中带有“”和“”符号会被浏览器解析。
输出在HTML属性中
看这样一段代码:
?PHP
echo a href=\.$_GET[name].\Enter/a;
?
这段PHP代码的意思就是把得到的name参数输出到一段HTML标记的A标签中,假设name的值是test,那么你将得到这样的页面:
a href=testEnter/a
这时我们再武断地给name附上“testscriptalert(123456)/script”是不会造成XSS攻击的,因为脚本会被浏览器认为是href的值,这时候需要稍微动点脑子才行:http://localhost/test2521.php?name=testHi/ascriptalert(123456)/script!--
得到这样的页面:
a href=testHi/ascriptalert(123456)/script!—Enter/a
请注意,蓝色字体为PHP程序输出,而红色字体是我们提交的参数。哈哈,我们提交的“”和“/a”闭合了原来的A标签,然后跟上JavaScript代码,之后的A标签的后部分被--注释掉了。
以上就是传入数据输出到属性中的情况,关键点是我们提交的数据能够闭合属性标签。这个例子是双引号,其实属性也是可以用单引号甚至不用引号的(如果属性的值中没有空格的话就可以不需要引号),道理都是一样的,只要闭合它们就可以了。
输出在JavaScript代码中
JavaScript和HTML结合紧密,所以有时候程序员们就会把参数输出到JavaScript代码中:
?PHP
echo script;
echo var yourname = .$_GET[name].;;
echo /script;
?
分析PHP代码输出的页面,我们很容易构造出XSS攻击测试URL:http://localhost/test2531.php?name=a;alert(123456);//
实际上是我们利用单引号闭合了JavaScript代码的变量赋值,然后再执行我们的alert函数(因为PHP5在默认情况下是会自动对传入的单引号转义的,这里只是为了演示,所以我们认为此处单引号不被转义。即假设PHP的magic_quote_gpc为Off)。
得到的返回页面是这样的:
script
var yourname = a;alert(123456);//;
/script 然后你又看到那个显示123456表示脚本被执行的演示对
您可能关注的文档
- php learning笔记.doc
- linux上机练习十.doc
- 现浇箱梁支架的设计与施工计算(a).doc
- 【Linux系统教程】Shell特殊字符.doc
- php字符串处理函数 字符串查找、替换、截取.docx
- 西北大学unix期中作业.doc
- 毕业答辩复习辅导---wdh.ppt
- Unix Shell 介绍.doc
- 批处理学习总结之常用符号.docx
- 视光学基础培训(唯尊公司).ppt
- 可编辑文档:证券行业2024年投资策略分析报告:供给侧优化,关注底部机会.pptx
- 中国新能源行业市场前景及投资研究报告:风光无限,风电,光伏,储能.pdf
- 公用事业行业市场前景及投资研究报告:火电电量增速转正,“煤硅”,风电,光伏,储能.pdf
- 2024年国家医保谈判品种分析报告.pdf
- 电网设备行业2024年市场前景及投资研究报告:景气持续,从周期迈向成长.pdf
- 可编辑文档:中国银行-银行业全球发展趋势和中行结构重组项目.pptx
- 资产配置研究系列分析报告:全球资产配置模型,市场短期波动.pdf
- 波动率因子改进分析报告:指数加权移动平均波动率.pdf
- 可编辑文档:中美消费板块市场前景及投资研究报告:港股.pptx
- 量化择时系列分析报告:成交量择时指标,VMACD_MTM.pdf
文档评论(0)