没事重新从xss的源码分析一下形成和利用
- xss挑战之旅进入一关,发现url中有一个参数name可控;测试测试一下,弹窗成功,在xss中拥有同样弹窗效果的函数alert,还有prompt,以及confirm和prompt
查看原码发现对输出没有进行过滤,直接get参数输出
查看原码发现对输出没有进行过滤,直接get参数输出
2. 第二关进入,看到输入发现没回应,查看原码被转义了尝试构造闭合payload: “>
打开源码发现一处被htmlspecialchars($str)转义另一处没有转义
3. 进入第三关构造payload打开原码发现尖括号被转义,使用事件函数oninput onclick 或者onchange payload为’ οnchange=alert’123’ ‘触发
查看原码发现尖括号被转义
4. 进入第四关 构造payload发现为黑名单过滤了尖括号使用onclick触发,使用“闭合payload为
" οnclick=alert ‘123’
查看原码果然为 黑名单过滤
6. 进去后尝试payload查看前台原码发现on和script变成了o_n ,s_cript ,尝试使用a标签实现函数的调用,然后用javascript:alert(‘123’)去调用javascript函数触发构造的pyload
"> dian
查看原码发现对特定函数进行了添加_
7. 尝试构造payload发现上次的href增加了_,尝试增加大小写绕过 payload ">dian
查看原码发现黑名单果然增加了
8. 构造上次的payload发现href和 script被过滤,尝试复写嵌套”>alert(1)
查看原码果然是过滤了这些函数
9. 构造payload尝试发现给关键字都加上了_ 大小写也不行,尝试html编码绕过成功payload
javascript:alert(1)
查看源码
9.使用上次的pyload发现没有识别,查看前台原码发现提示要验证http合法性后面添加javascript:alert(1)//http://
查看后端原码,发现在以前的基础上添加了http判断
10.进入第10关,查看前台原码尝试函数发现多了hidden这个参数,发现t_sort是可以注入的,于是用t_sort来弹窗构造payload使用onclick弹出使用text显示出来payload为 t_sort=" οnclick=“alert(123)” type=“text” “”
11.构造payload查看前台源码发现ref字段是http referer的值,参数尝试抓包改包,构造参数
9. 构造payload查看前台源码发现t_ua字段是http User-Agent的值,参数尝试抓包改包,构造参数
- 构造payload查看前台源码发现t_cook字段是http cookie的值,参数尝试抓包改包,构造参数
14.没有环境
15.直接看源码吧没试出来
看到这个函数百度一下是文件包含的一个类,选择包含还要没尖括号选择包l2的
16.查看原码,发现输入的东西经过了大小写的转换并且通过四次的替换检查,分别对script,空格,/,进行了替换,但尖括号没有被替换。
可以使用img标签,,可以选择%0d %0a 进行绕过,构造出最后的payload,
<img%0dsrc=1%0dοnerrοr=“alert(123)”>
17.打开源码发现了两个注入点构造payload
俩个输出的值都被做了实体化转义,无法闭合标签,而 embed标签可以加入事件,可以在arg01,或者arg02中加入事件去触发
18.尝试上次的payload直接弹窗
看输出跟上一关一样
19.后边涉及到反编译看了大哥的没看懂,下去再研究一下payload :arg01=version&arg02=%3Ca%20href=%22javascript:alert(%27xss%27)%22%3E111%3C/a%3E
20.payload为arg01=id&arg02=%22))}catch(e){}if(!self.a)self.a=!alert(/xss/)//%26width%26height