xss-labs1-10关

文章讲述了如何在HTML中利用双引号、HTML编码函数如htmlspecialchars,以及PHP中的事件属性如onclick,对抗网页过滤机制。作者逐步探索了从输入特殊字符到使用Unicode编码、链接过滤,最后提到利用隐藏属性和改变input类型的方法进行渗透测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第二关:双引号闭合

第三关:HTML事件属性

第四关:HTML事件属性+双引号闭合

第五关:<a>标签的href属性

第六关:大小写过滤

 第七关:双写

第八关:href的隐藏属性:自动Unicode解码

第九关:href的隐藏属性+链接过滤

第十关:修改type使隐藏的<input>显示出来


第一关:

html部分标签可以解析js

<script>alert (1)</script>

第二关:

可以看到value用双引号闭合了,使用上一关的payload没用,尝试一下闭合这个input

所以使用双引号和>闭合后再加入上一关的payload

11"><script>alert(1)</script>"

第三关:

通过查看源码发现是使用了单引号闭合

再使用上一关payload发现它在输入get时使用了.htmlspecialchars(HTML实体编码)

这个函数是PHP中的一个编码函数,用于将字符串中的特殊字符转换为对应的HTML实体。它通常用于确保字符串在HTML页面中显示时不会出现意外的效果。

实现原理是将字符串中的特殊字符(如单引号、双引号、反斜杠等)分别替换为对应的HTML实体,如单引号变为&#39;,双引号变为&quot;等。这样,当字符串通过HTML页面输出时,这些特殊字符就会按照正确的编码显示出来。

用途:确保在HTML页面中显示的字符串不会因为特殊字符的问题导致显示异常。例如,在创建表单输入框的标签时,通常需要对用户输入的内容进行转义,以确保输入的内容不会因为特殊字符的问题导致表单无法正确提交。

注意事项:

  1. 虽然.htmlspecialchars($str)函数可以自动处理各种特殊字符,但是如果输入的字符串中包含了CDATA部分(即<![CDATA[ ]]>),那么这个函数可能无法正确处理其中的特殊字符。在这种情况下,需要使用其他方法来处理CDATA部分,或者避免使用特殊字符。

  2. 此函数仅适用于PHP页面输出,如果在非PHP页面输出中使用,可能不会起到预期的效果。

  3. 此函数会自动处理双引号、单引号、反斜杠等特殊字符,但是不会处理其他字符,如&、<、>等。如果需要处理这些字符,可以使用.htmlspecialchars($str, ENT_QUOTES),这将额外处理双引号和单引号。

 在HTML中有这样一些事件属性:

 尝试使用onclick

需要在输入成功后使用鼠标点击

第四关:

查看网页源码发现使用了双引号闭合....其他和上一关没区别

第五关:

使用上一关的payload发现这关将onclick加了个_,应该是过滤

查看源码:

在HTML的<a>标签中有这样一个属性:href,可以连接JavaScript

 输入:,点击111

第六关:

可以看到也是过滤

 尝试一下大小写(看源码//猜):...........它居然没有过滤大小写

 第七关:

看来是过滤

 

 大小写也不行了。尝试双写

1"oonnclick="alert(1)

第八关:

查看网页源码发现这关使用了过滤,并且还将input标签添加了html实体转化函数还把双引号也给实体化了, 添加了小写转化函数,还有过滤掉了src、data、onfocus、href、script、"(双引号)

所以我们使用href的隐藏属性:自动Unicode解码 ,将这个js伪协议使用Unicode编码

JavaScript:aleret(1)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

点击链接

第九关:

使用上一关的js伪协议显示链接不合法;可以查看源码发现链接里必须要有http://

所以我们将js伪协议编码,再在后面加上http://并且用/*http://*/进行注释

第十关:

可以看到有三个value,先尝试那个可以写入

“t_link=aaa&&t_history=bbb&&t_sort=ccc

可以看到t_sort的value变成了ccc,可以尝试从这里,因为<input>都被隐藏了,我们尝试将type改为"txt"可以让他显示出来,在<input>显示出来后就可以尝试onclick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电力小子sp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值