Xss-labs(1)第一关到第十一关

Xss-labs靶场训练

第一关:

查看页面源代码回显playload长度:

插入一段js代码,get传参,一个简单的插入

顺利来到第二关,二话不说先直接尝试插入,并没有成功:

查看页面源代码:

特殊字符被实体转义了

我们需要闭合掉双引号即可,构造payload,这一关是闭合绕过

来到第三关,随便输入一个闭合弹窗试试,符号也被实体化了:

查看php源码

PHP htmlspecialchars() 函数

我们可以利用其他方法进行xss注入,这里我们可以利用onfocus事件绕过

看一下w3cschoo的相关介绍

onfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,以上面图片的html标签<input>为例,<input>标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

所以我们可以利用这个事件来绕过<>号的过滤已达到执行js的目的,构造payload,直接在输入框处输入 ‘ οnfοcus=javascript:alert() ‘,回车后再次聚焦输入框就会出现弹窗了:

第四关:

查看源代码发现是双引号闭合事件

这里是双引号闭合,<input>标签,所以我们还能继续利用onfocus事件,构建payload

第五关:

看上去像双引号闭合,但应该不会三关都是onfocus事件,查看源码确实不是

查看php源码,将字母小写化、script和on都被替换掉了,还有htmlspecialchars() 函数把<>过滤了

尝试用超链接过滤试试,添加一个标签得闭合前面的标签,构建payload

"> <a href=javascript:alert()>xss</a> <"

点击xss就可以通关了

第6关:

还是使用上一关的playload查看页面的源码显示,同样是特殊字符被过滤掉和href被_替换。

查看php源码,果然很多字段被过滤了,看看大小写能不能绕过

“> <sCript>alert()</sCript> <”能绕过,alert中不能带参数(不知道为啥)

试了其他代码也是可以的

"> <a hRef=javascript:alert()>xss</a> <"

" oNfocus=javascript:alert() "

第7关:

查看源码,没有发现有什么问题

查看php源码,发现过滤了很多字段

我们可以利用双拼写来绕过,比如on,我们可以写成oonn,当中间on被删掉的时候,就变成了on,比如script,可以写成scscriptript,当script被删掉的时候,就变成了script

<a hhrefref=javasscriptcript:alert()>xss</a>

第八关:

点击查看友情链接

查看php源码过滤掉了src、data、onfocus、href、script、"(双引号)

网上查询了解到利用href的隐藏属性自动Unicode解码,插入一段js伪协议

javascript:alert()

说明不需要自己加href标签,直接插入javascript:alert()的Unicode解码在线Unicode编码解码

解码后:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

在输入框输入解码后的Unicode点击友情链接

第九关,看样子应该和前一道题差不多,试试看

不成功,Unicode被

当false等于false的时候(就是传入的值没有http://)就会执行if,为了防止false===false,我们需要向传入的值里面添加http://并用注释符注释掉否则会执行不了无法弹窗,让函数strpos返回一个数字,构造payload

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/* http:// */(对于这个用法我也不是很清楚,后续自己再去关注一下,或者那个大佬可以指点迷津)

第十关

先测试一下关键字

" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> &#106;

被实体化了,看一下php源码

还有其他隐藏的传参方法,这里是get传参t_sort,并过滤掉了<>号,不能闭合插入标签,但是我们还能用onfocus事件,因为这里输入框被隐藏了,需要添加type="text",构造payload

第11关

直接看源码

可以看到上一关的那个变量$t_sort已经被函数htmlspecialchars()洗礼了,$t_ref,它是接收了$_SERVER['HTTP_REFERER']这个请求头

看网上抓包添加referer字段,但是我试了出不来

后面我尝试在拦截包的地方发送就不repeater了

第二种方法

 

### XSS-Labs 解法教程与实验答案 XSS (Cross-Site Scripting) 是一种常见的安全漏洞,攻击者可以通过注入恶意脚本影响用户的浏览器行为。以下是于如何解决 XSS-Labs 靶场的一些常见解法以及学习资源。 #### 于 PHP 替换 `<` 和 `>` 的处理方式 当服务器端通过 PHP 将输入中的尖括号 (`<`, `>`) 进行过滤并替换为空字符串时,可以尝试利用 HTML 属性或 JavaScript 事件来绕过这种简单的防护机制。例如,在某些场景下,可以使用无标签的属性组合触发 XSS 攻击[^1]: ```html <input value="javascript:alert(1)" onclick="eval(this.value)"> ``` 上述代码片段展示了如何通过设置 `value` 属性为可执行的 JavaScript 并结合 `onclick` 事件实现弹窗效果。 --- #### 常见 XSS-Labs 题目解析 ##### 第一关至第五基础 XSS 测试 这些题目通常涉及反射型 XSS 的基本原理。用户提交的数据会被直接返回到页面上而未经过滤。最简单的方式是测试以下 Payload 是否生效: ```html <script>alert('XSS')</script> ``` 如果被转义,则可以尝试其他变种形式,比如 Unicode 编码或者 HTML 实体编码[^2]: ```html <script>alert('XSS')</script> ``` ##### 中级挑战(第六至第十) 此阶段可能引入了一些额外的安全措施,如移除特定字符、HTML 转义等。此时需要更复杂的技巧,例如嵌套标签、伪协议调用等方式突破防御逻辑。举例如下: ```html <img src=x onerror=alert(document.cookie)> ``` 该 Payload 利用了图片加载失败后的回调函数完成跨站脚本注入操作[^3]。 ##### 高级部分(第十一及以上) 高级别的题目往往综合运用多种技术手段防范潜在威胁,包括但不限于 WAF(Web Application Firewall),严格的 CSP(Content Security Policy) 设置等等。针对这种情况下的解决方案更加多样化且依赖具体环境配置情况分析得出结论。 --- #### 学习资源推荐 对于希望深入理解并实践 XSS 技术的学习者来说,除了参与像 XSS-Labs 这样的在线平台练习外,还可以参考如下资料进一步提升技能水平: - OWASP 官方文档提供了详尽描述各类 Web 应用程序安全性议题的文章集合。 - PortSwigger Academy 提供了一系列免费课程帮助初学者掌握现代网络安全概念及其应用实例说明[^4]。 另外也可以注一些知名博主分享的技术博文系列文章作为补充材料阅读源之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值