XSS闯关日记
Posted 西柚网安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS闯关日记相关的知识,希望对你有一定的参考价值。
XSS闯关笔记
西安邮电大学
逆·流沙团队成员
No.1
Xss第一关
No.2
Xss第二关
查看源码发现可以在value值这里注入
![XSS闯关日记](https://image.cha138.com/20210429/54ddbbbd3d3d41eca58f0b20f1b960c1.jpg)
对其闭合再注入
![XSS闯关日记](https://image.cha138.com/20210429/ade687fd50f54347b25f1fcbb43d687f.jpg)
No.3
Xss第三关
同样位置:
![XSS闯关日记](https://image.cha138.com/20210429/c7921fe5798e4f8dbfed3e42cc24718a.jpg)
注入后发现后端使用了htmlspecialchars函数过滤:转义双引号和尖括号
![XSS闯关日记](https://image.cha138.com/20210429/8b51bc9aba944bebb2cf612452f89733.jpg)
使用不带过滤符号的函数,需要移动鼠标才会执行
![XSS闯关日记](https://image.cha138.com/20210429/ff10367bed094ab6b2d53b8f25c261d5.jpg)
No.4
Xss第四关
![XSS闯关日记](https://image.cha138.com/20210429/d3ca8d1599cf4593afcd59739f673581.jpg)
跟第三关差不多,查看源码会发现只是把尖括号换成空
使用类似的payload(需要点击边框才会执行)
![XSS闯关日记](https://image.cha138.com/20210429/dac3a8d378b84f129e71678c022e2b49.jpg)
No.5
Xss第五关
![XSS闯关日记](https://image.cha138.com/20210429/ce4aaffcbfe247d49835440446adf4f4.jpg)
![XSS闯关日记](https://image.cha138.com/20210429/69900d92076a4d7089bd8f826f62c7ed.jpg)
过滤了script标签和on,试试其他方式,用a标签通过
![XSS闯关日记](https://image.cha138.com/20210429/a6b423e1e4ac4313bc822b746e0ffeb1.jpg)
No.6
Xss第六关
和上方一样的过滤
![XSS闯关日记](https://image.cha138.com/20210429/e9078930ac524efcb85d6e38526c76a4.jpg)
源码发现没有了strtolow()函数,尝试大小写绕过
![XSS闯关日记](https://image.cha138.com/20210429/82ddf757f3f4430db673569dd5620fc6.jpg)
No.7
Xss第七关
![XSS闯关日记](https://image.cha138.com/20210429/3aa5489554de4b99b9f15d3373cd919d.jpg)
这里直接过滤为空,可以试试复写
![XSS闯关日记](https://image.cha138.com/20210429/e123082b216f4dacb872576a037bf609.jpg)
![XSS闯关日记](https://image.cha138.com/20210429/08fced654025456e8b3a3600dcc79bf8.jpg)
No.8
Xss第八关
![XSS闯关日记](https://image.cha138.com/20210429/711ece0383024f9ea9fa98ea3f94359f.jpg)
想必到这里,该过滤的都差不多了,这个的突破点在这个链接这里,此处有个a标签,会把输入的内容作为标签内容
![XSS闯关日记](https://image.cha138.com/20210429/15d5756126914fbe815206351cb7d8ec.jpg)
但是script被过滤了,可以用html的实体编码方式绕过
Payload:jav
ascript:alert('xss');
或者图中的这个
![XSS闯关日记](https://image.cha138.com/20210429/fe8208e596f941c2a6c6b7de46905a05.jpg)
No.9
Xss第九关
在源码里发现了strpos()函数,如果输入的内容中没有http://会弹出你的输入不合法
![XSS闯关日记](https://image.cha138.com/20210429/f509aa333bec49fcba14a0c9b3dbffe2.jpg)
这里加上注释,在注释里写http://就可以
![XSS闯关日记](https://image.cha138.com/20210429/7589e6918cd5455db7ae8992db6f93b2.jpg)
No.10
Xss第十关
![XSS闯关日记](https://image.cha138.com/20210429/a2db69b7878948aa920c566a99f44561.jpg)
Keyword注入貌似没用,但发现了几个隐藏标签,可以试试在这几个标签中是否可以注入
![XSS闯关日记](https://image.cha138.com/20210429/ffa032e671ec4042a4d7f4ad7ee353ba.jpg)
No.11
Xss第十一关
先是测试发现keyword和t_sort被实体化
![XSS闯关日记](https://image.cha138.com/20210429/63ac01eb784d4052b7295026bff68ff6.jpg)
但发现还有个t_ref的参数,试试在referer头中注入
![XSS闯关日记](https://image.cha138.com/20210429/0905388a933d40469bd3ef6a5b7318c6.jpg)
修改payload
![XSS闯关日记](https://image.cha138.com/20210429/ce7452af301f4b33ae0d4c41a1b7b5c2.jpg)
![XSS闯关日记](https://image.cha138.com/20210429/af0049b4680c45738ebe961651625639.jpg)
No.12
Xss第十二关
这次放聪明些,看到前端代码中有ua,猜测在useragent头部注入
![XSS闯关日记](https://image.cha138.com/20210429/0215cc8877a14f1da3ec4b037a91f897.jpg)
![XSS闯关日记](https://image.cha138.com/20210429/3f4f1a6da0424acda9387963484cc873.jpg)
No.13
Xss第十三关
![XSS闯关日记](https://image.cha138.com/20210429/0022bc352f57453c8673a8d7b49077ef.jpg)
不用看了cookies注入(经常看数据包的人会知道为什么这里要用user=)
![XSS闯关日记](https://image.cha138.com/20210429/ed946d7a572f4b92ba9f7ab971d7b873.jpg)
![XSS闯关日记](https://image.cha138.com/20210429/5b258e44fa344f969f5dd4723d53cd12.jpg)
No.14
Xss第十四关
(改用google来做)
![XSS闯关日记](https://image.cha138.com/20210429/c1d0232c3ef24aed948526326f6bfeff.jpg)
用iframe引入了一个页面,这个引入的页面里存在一个可以执行图片的exif信息中包含xss代码的漏洞,可以参考乌云爆出的漏洞http://www.anquan.us/static/bugs/wooyun-2012-09110.html
上传图片后点击查看大图就可以执行xss代码
不过不知道什么原因导致的哪个页面找不到上传图片的位置,所以下面我就演示一下怎么修改图片的exif信息
用MagicEXIF 元数据编辑器(win下)打开图片
![XSS闯关日记](https://image.cha138.com/20210429/b7bbbe11ec6143f9845f869054e4be05.jpg)
完成后保存信息查看原图片的属性信息
![XSS闯关日记](https://image.cha138.com/20210429/b41d53626e5e400d89121769595d3648.jpg)
完成后将这张图片上传即可
No.15
Xss第十五关
发现这一关引入了angular的js框架,且为1.2.0版本
![XSS闯关日记](https://image.cha138.com/20210429/ffcffb48a89b4c55a67887025ca00f36.jpg)
下面这一行是利用了angular的js框架的ng_include指令来包含文件的,先测试一下
![XSS闯关日记](https://image.cha138.com/20210429/2e1a08fb47f04f78a3e3dc9c798936ce.jpg)
接下来链接一下第三关的网页链接及注入payload
![XSS闯关日记](https://image.cha138.com/20210429/d3af9f8194bc4540b5e6b49c64b81767.jpg)
简单说一下原因:
AngularJS是一个谷歌开发的MVC客户端框架。使用AngularJS可以对包涵有ng-app标签的模版进行客户端的渲染,他可以通过插入一个特定的标签,然后对这个标签内的内容进行解析,达到渲染模版的效果,正是因为这个特性,所以导致了我们不需要使用html标签,只能要我们输入的内容能够输出在ng-app标签内就可以配合AngularJS的标签来进行xss。
No.16
Xss第十六关
源代码中没有任何东西,但是keyword,可以使用
![XSS闯关日记](https://image.cha138.com/20210429/12fdf887bbc941de9213f82c8faf25cc.jpg)
而且输出位置的标签并不能使用,所以标签内注入实现不了
自己写标签但空格被过滤,绕过后可以成功
另一个
payload:<img%0Asrc=xss%0Aonmouseover=alert('xss')>
![XSS闯关日记](https://image.cha138.com/20210429/10446157b67e490f9cf292a837251c5f.jpg)
No.17
Xss第十七关
这一关主要是在embed标签,它本身就可以加入事件
![XSS闯关日记](https://image.cha138.com/20210429/2d0375ed0f9b46d092b0d103f87336c8.jpg)
可能是火狐限制了弹窗,用google打开后就ok了
![XSS闯关日记](https://image.cha138.com/20210429/8e3d7b6003d74b228e0e4fc3872a99ec.jpg)
No.18
Xss第十八关
和十七关没啥区别,同一个payload可过
十九和二十关是flash的xss注入,鉴于flash基本上告别了我们的浏览器,就写了(关键是我也不太会,哈哈)
写在最后:
建议大家多看看源码,熟悉常规情况下的xss过滤机制,这里我并没有把源码贴出来,其实好多地方看到源码就知道怎么过滤了,可以的话下次再出一篇源码解释的笔记。
大家可以根据这个笔记里的内容,查看源码的过滤机制,更有助于理解xss的绕过方法。
以上是关于XSS闯关日记的主要内容,如果未能解决你的问题,请参考以下文章