练习网站:欢迎来到XSS挑战 (angelo.org.cn)
知识点
事件:
onclick——鼠标点击事件
onmousemove——将鼠标光标移动到改内容上方触发事件
1.伪协议
javascript伪协议:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行
2.反射型XSS:前端页面输入-后端PHP处理-前端页面输出
3.存储型XSS:前端页面输入-后端PHP处理-写入数据库-前端页面输出
发现留言板中的留言放在
标签中,并且存储到数据库中
将攻击语句从留言板中放入,网页会将其放入到数据库中,且永久存在
XSS
1.一个标签之间可以嵌套另外一个标签
2.左标签里面可以插入属性,但是不能插入另一个标签
3.
4.左标签里面可以插入JS事件(属性),该事件可以触发后面的JS代码
5.F12控制台可以执行JS代码
6.alert 弹窗
7.console.log("") 控制台文本输出
8.<=< %gt;=>
Level1
name=
编辑
Level2-双引号闭合
输入查看源码
编辑
方法一闭合标签
">
编辑
方法二闭合双引号
" onclick=alert('xss') "
编辑
Level3-单引号闭合
输入查看源码
编辑
先闭合标签,发现不行
'>
>被转义
编辑
' onmouseover=alert(1) ' 闭合前面的单引号
' onmouseover='alert(1) 闭合onmouseover
编辑
Level4
输入<script " ' Oonn>查看源码
编辑
1.<>被html转码
闭合标签
编辑
Level5
输入<script " ' Oonn>查看源码
编辑
1.<>被html转码
2.oonn变成oo_nn
3.
4.过滤大小写
闭合标签,测试伪协议
编辑
Level6
输入<script " ' Oonn>查看源码
编辑
1.<>被转码
2.
3.Oonn变成Oo_nn
采用大小写绕过
A." Onclick=alert(1) "
编辑
B. ">click me!
编辑
C. ">
编辑
Level7
输入<script " ' Oonn>查看源码
编辑
1.<>被转码
2.script被转义
3.过滤大小写
采用双写绕过(oonn变成on)
编辑
Level8
输入<script " ' Oonn>查看源码
编辑
1. 过滤大小写、双写、script、on、和双引号
进行编码绕过 #javascript:alert(1) 把c转换成十六进制(c)
编辑
Level9
输入<script " ' Oonn>查看源码
编辑
1. 对<>、大小写、双写、”、进行转义,且对协议进行检测
2. 尝试网页是否对http://位置检测<script ' " oonn>http://,发现并没有位置检测
编辑
3. 用//...//将http://进行注释,否则会影响javascript
先编码后注释 # javascript:alert(1)//http://
编辑
Level10
1.在URL测试
编辑
2.发现被隐藏的标签,切换payload进行测试,将?keyword换成?t_link,?t_history,?t_sort进行测试,发现t_sort中有注入点
编辑
3.构造一个新的type
?t_sort=" onclick=alert(1) type=button "
编辑
通关笔记
第一关:
1、没有任何过滤。
2、输出在一对标签之间,插入另一对标签。
第二关:" onclick=alert(1) "
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17有输出,输出在左标签里面,没有任何过滤。
3、通过闭合双引号插入onclick事件,进而通过点击触发alert()函数。
第三关:' onclick=alert(1) '
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
3、通过闭合单引号插入onclick事件,进而通过点击触发alert()函数。
第四关:" onclick=alert(1) "
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17行有输出,但是有过滤:把<>通过str_replace()函数替换为空。
3、通过闭合双引号插入onclick事件,进而通过点击触发alert()函数。
第五关:">点击
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17行有输出,但是有过滤:把<script通过str_replace()函数替换为<scr_ipt;把on替换为o_n。
3、通过">闭合标签,再插入带有javascript伪协议的标签,
第六关:" ONclick=alert(1) "
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17行有输出,但是有过滤:把<script通过str_replace()函数替换为<scr_ipt;把on替换为o_n;src替换为sr_c;把data替换为da_ta;把href替换为hr_ef。
3、通过ON绕过小写on替换插入ONclick事件,进而通过点击触发alert()函数。
第七关:" oonnclick=alert(1) "
1、在页面源码第15行有输出,但是有过滤:把<>通过htmlspecialchars()函数进行html实体编码。
2、在页面源码第17行有输出,但是有过滤:强制转小写,并且把script、on、src、data、href替换为空。
3、通过双写,绕过替换为空,插入ONclick事件,进而通过点击触发alert()函数。
第八关:javascr%09ipt:alert(1)
1、在页面第17行有输出,但是有过滤,把on替换为o_n,并且进行了html实体编码。
2、在页面第20行有输出,但是有过滤,把on替换为o_n,并且进行了html实体编码。
3、通过向javascrit中插入特殊符号%0A、%09、%0D,绕过script的替换。
第九关:
1、在javascript中,可以使用//进行注释
第十关:
1、在html标签中:type="hidden"表示隐藏该标签,可以向前插入type="text"显示该标签,两者同时出现,优先执行左边的。