目录
第二关:双引号闭合
第三关: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实体,如单引号变为
'
,双引号变为"
等。这样,当字符串通过HTML页面输出时,这些特殊字符就会按照正确的编码显示出来。用途:确保在HTML页面中显示的字符串不会因为特殊字符的问题导致显示异常。例如,在创建表单输入框的标签时,通常需要对用户输入的内容进行转义,以确保输入的内容不会因为特殊字符的问题导致表单无法正确提交。
注意事项:
虽然
.htmlspecialchars($str)
函数可以自动处理各种特殊字符,但是如果输入的字符串中包含了CDATA部分(即<![CDATA[ ]]>),那么这个函数可能无法正确处理其中的特殊字符。在这种情况下,需要使用其他方法来处理CDATA部分,或者避免使用特殊字符。此函数仅适用于PHP页面输出,如果在非PHP页面输出中使用,可能不会起到预期的效果。
此函数会自动处理双引号、单引号、反斜杠等特殊字符,但是不会处理其他字符,如&、<、>等。如果需要处理这些字符,可以使用
.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)
javascript:alert(1)
点击链接
第九关:
使用上一关的js伪协议显示链接不合法;可以查看源码发现链接里必须要有http://
所以我们将js伪协议编码,再在后面加上http://并且用/*http://*/进行注释
第十关:
可以看到有三个value,先尝试那个可以写入
“t_link=aaa&&t_history=bbb&&t_sort=ccc
可以看到t_sort的value变成了ccc,可以尝试从这里,因为<input>都被隐藏了,我们尝试将type改为"txt"可以让他显示出来,在<input>显示出来后就可以尝试onclick