level5
herhtrhtehretth这一关on和<script>会被强制使用下划线分隔,所以前面关卡的代码不能通过这一关。
所以这一关利用javascript伪协议进行绕过
javascript伪协议:JavaScript 伪协议是一种特殊的 URL 协议,允许在 href 或者其他属性中直接执行 JavaScript 代码。通常情况下,当浏览器遇到以 "javascript:" 开头的 URL 时,会立即执行后面的 JavaScript 代码。这种协议通常用于在 HTML 中直接嵌入简单的 JavaScript 代码或者执行一些动作。
构造代码"><a href=javascript:alert(/heihei/)>即可
这里提交后要点击一个蓝色的》才会提示成功。
level6
这一关在之前的基础上herf也被过滤掉了,但检查源代码,可以发现这一关没有过滤大小写,所以一个大小写配合使用便可狠狠拿捏它。
level7
这一关script直接变成了空值,也就是检测到有script等关键字符直接替换成了空值。需要用到双写来进行绕过了。
构造代码:"><sscriptcript>alert('xss')</sscriptcript>
在原来的script之中的任意一个地方直接加入一个script,注意这个加入的script不能分开,识别到后这个加入的script会被替换成空值,剩下的部分自动拼接,执行时空格会被自动忽略。
level8
这一关对大小写、特殊字符、单双引号进行了过滤处理
可以使用编码绕过
这里使用unicode编码转换
构造代码:javascript:alert(/xss/)
之后点击友情链接显示过关。
level9
这一关还有上面的对各种关键字的过滤,同时还利用了strpos函数进行验证,但是没有检测编码后代码的相关限制,所以还可以利用上一关的思路编码来绕过。将关键字javascript中的部分字符用编码代替
构造代码:javascript:alert('xsshttp://')
同点友情链接显示过关。
level10
type=hidden使得对话框不能显示在页面上,要先把输入框搞出来,点击F12进入开发者模式,把type=“hidden”>这些删去,页面上即可显示出输入框。
之后在输入框里构造代码:?keyword=nul&t_sort=" type="text" οnclick="alert('xss')
之后再次点击输入框边可提示完成的不错!
level11
和第十关差不多,知识又多了个t-ref:
用第十关的:"type='text' onclick="javascript:alert(/xss/)即可。
![](https://img-blog.csdnimg.cn/direct/778d165853ce4db1a7cacef7b9fb0b96.png)
level12
同上面两关的步骤一样,先把type里面的hidden改为text使显出输入框,之后在框里输入"οnmοuseοver="alert(1),之后把前后面的单引号改为双引号,之后再改value后面的为text。
level13
这一关相比于前面的关卡多出来一个t_cook,与cookie有关
bp抓包修改里面的cookie
倒数第二行改为
之后点击Forward即可
level14
迷惑!!??
level15
页面上没有任何有用的信息,查看源代码
里面的ng-include函数相当于php的include函数
`ng-include` 是 AngularJS 框架中的一个指令,用于在 AngularJS 应用程序中包含外部 HTML 文件或视图模板。通过使用 `ng-include` 指令,可以将外部的 HTML 内容动态地包含到当前页面中,实现页面模块化和重用。
以下是 `ng-include` 指令的基本用法和语法:
```html
<div ng-include="'path/to/template.html'"></div>
```
在上面的示例中,`ng-include` 指令会将 `path/to/template.html` 文件的内容加载并插入到包含该指令的 `<div>` 元素中。这样可以实现页面模块化,将页面拆分为多个模块或组件,便于管理和维护。
在实际应用中,`ng-include` 可以用于动态加载导航栏、侧边栏、页脚等通用的页面部分,也可以用于加载动态内容或根据条件加载不同的模板文件。
需要注意的是,`ng-include` 是 AngularJS 提供的一种简单但强大的模板包含机制,但在 AngularJS 之后的版本中(如 Angular 2+),这种方式可能已经被更先进的组件化和模块化方式所取代。因此,如果你正在使用较新版本的 Angular,可能会有更好的替代方案来实现类似的功能。
构造代码:'level1.php?name=<a href="javascript:alert(/xss/)">'
点击下面的蓝色字体便可
level6
在url中构造payload,发现script和/没了
而且用上一关的:<img src=1 onerror=alert("xss")>
发现空格已经被实体化了
把空格进行编码:%0a
构造代码:<img%0asrc%0a1%0aοnerrοr=alert('xss')>
level17
这一关是通过arg01和arg02进行传参
直接构造代码:arg01=a&arg02=b%0aοnmοuseοver=alert(1)
level18
与level17步骤相同.
level19
这一关比前面在src处多了双引号
想要成功通过这一关需要闭合标签,
用htmlspecialchars()
函数进行处理
htmlspecialchars()
是一个常用的 PHP 函数,用于将特殊字符转换为 HTML 实体,以防止 XSS(跨站脚本攻击)等安全漏洞。这个函数将对以下字符进行转换:
&
(和号)转换为&
"
(双引号)转换为"
'
(单引号)转换为'
<
(小于号)转换为<
>
(大于号)转换为>
构造:arg01=version&arg02=<a href='javascript:alert(/xss/)'>xss</a>
level20
和前一关相似,构造:arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height