用户工具

站点工具


start:type

大众的分类

网站上或者是书上基本上是分成三类,存储型xss,反射型xss,dom型xss,这种分类方法似乎已经约定俗成了

见《白帽子讲web安全》第41页

见《web前端黑客技术揭秘》第76页

存储型xss

存储的意思就是xss payload已经永久存在于服务端了,又叫持久型xss,我给你一个正常的url,你点进去就触发了xss

反射型xss

反射的意思就是我输入的xss payload经过服务器反射又回到了页面上,又叫非持久型xss,我必须给你一个带xss payload的url,你点进去才能触发xss

dom型xss

这个比较特殊,如果抓包的话就能够明白了,它url虽然也必须带payload,但是不过服务端,也就是响应包里头没有这个payload

个人的分类

我如果从挖洞的角度来看,其实xss可以分为能自动化扫描的和非自动化扫描的两类,像上面的反射型xss和dom型xss都是可以做批量扫描,利用PhantomJS等无界面的浏览器检测弹窗事件就可以,而存储型xss却不行,因为输入和输出不在一起,没办法检测

举例

说了这么多,不如举个例子来得直观

存储型xss

因为这个web是dokuwiki搭建的,没有数据库,所以我就用文件代替了

<html>
<head><title>XSS存储演示</title></head>
<body>
<form action="" method="post">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
</body>
</html>
<?php
$xss=@$_POST['xss'];
file_put_contents('xss.txt', $xss);
?>

演示

<?php
echo file_get_contents('xss.txt');
?>

演示

反射型xss

<?php echo $_GET['xss'] ?>

演示

dom型xss

<script>
document.write(unescape(document.URL.substring(document.URL.indexOf("xss=")+4,document.URL.length)));
</script>

演示

start/type.txt · 最后更改: 2017/06/04 01:18 由 xss