2020.9.12-web学习笔记1

学习目标:

复习好xss(DOM),xss(Reflect)类型,并在DVWA上进行测试

学习内容:

xss漏洞的基本原理和防御

学习时间:

2020.9.11-21:00-23:00

学习产出:

简单复习一下xss漏洞原理:

xss漏洞原理就是:利用HTML和javascript代码盗取别人的cookie或者整个页面的源码。

xss漏洞与mysql注入漏洞原理类似,但xss漏洞注入的是HTML,JavaScript和css。

举个简单的例子,用GET传参

 <?php

echo $_GET['a'];

?>

这个时候,在页面上输入?a=<script>alert(1)</script>
就会直接弹窗“1”出来。

DVWA xss(DOM) low级别:

先观察Low级别的源码,发现
在这里插入图片描述
源码上直接说了是没有任何保护的,那就直接怼上去就可以了。
即在网站输入?default=English<script>alert(1)</script>

在这里插入图片描述

xss(DOM) Medium级别:
依然是先观察源码,看看增加了什么花样。

在这里插入图片描述
可以看到这里多了个stripos()函数,查询资料后可知
Stripos()函数——查找字符串在另一字符串中第一次出现的位置(不区分大小写)
根据源码一定要等于false,否则的话就会返回default。那么我们可以先试用一下刚才的弹窗指令?default=English<script>alert(1)</script>
发现啥也没有弹出来。也就是说script被过滤掉了。
那我们可以换一种思路,即用<img>漏洞
输入?default=English<img src=1 onerror=alert(1)>
回车后,跟刚才的<script>不太一样,虽然都没有显示,但是<script>后面直接什么都没有了。
在这里插入图片描述

但是<img>输入完后,在English后面还跟着输入进去的弹窗指令。

在这里插入图片描述

但是也还是没有弹出任何东西。
既然后面还跟着东西,也就是说输入的指令是对的,只不过应该是被某些东西给挡下来了。那我们可以进去HTML代码里面看看。
在这里插入图片描述
可以看到指令被写到 option value里面去了。
那就得绕过value把指令拿出来。
于是,?default=English</option><img src=1 onerror=alert(1)>
在这里插入图片描述
结果还是在里面出不来,那就直接把select给过了。

?default=English</option></select><img src=1 onerror=alert(1)>

在这里插入图片描述

这样就出现了弹窗了。
正常来说,xss漏洞写进来,它是单独一行的,应该不会写到option函数里面去的。那这个DOM型medium级别的xss漏洞就提供了一种思路。
如果所写的东西出现在HTML代码里面,但是没有弹窗,只是中间被什么东西给过滤了,这时候就绕过过滤的函数了。

high级别:
依然是先看源码
在这里插入图片描述
源码里面“#”是Ok 的
php的注释符有“#”
HTML的注释符并没有“#”
那只要一个“#”就可以绕过了。

?default=English#<script>alert(1)</script>

在这里插入图片描述
impossible级别(xss(DOM)漏洞的保护)
在这里插入图片描述
意思是,不需要做任何事情,保护在客户端处理。
xss本身在IE上是有保护的,window默认会过滤掉xss,只不过写php的时候基于一些原因会把启用xss筛选器给禁用。

xss(Reflected) low级别:
在这里插入图片描述
依然没有任何防御,直接怼。

<script>alert(1)</script>

在这里插入图片描述
medium级别
在这里插入图片描述
出现了个str_replace()函数。
str_replace()函数以其他字符替换字符串中的一些字符(区分大小写)
因为区分大小写,所以可以用大小写绕过

<sCript>alert(1)</script>

在这里插入图片描述
或者可以用<sc<script>ript>alert(1)</script>
在这里插入图片描述

high级别
在这里插入图片描述
这里出现了个正则匹配preg_replace()
preg_replace 函数执行一个正则表达式的搜索和替换。
如:

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

其意思为搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。
返回到题目中来,其意思为无数次匹配script的大小写,一旦发现就给注释掉。
既然不给用script,那就改用img咯
即可以用<img src=1 onerror=alert(1)>
在这里插入图片描述
impossible(抵挡xss(Reflected)漏洞)级别:
在这里插入图片描述
这里出现了htmlspecialchars() 函数
把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体
直接把弹窗指令所需要的“<”和“>”都变没了,那还怎么搞xss攻击?

猜你喜欢

转载自blog.csdn.net/weixin_49965414/article/details/108549548