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传参

 

echo $_GET['a'];

?>

这个时候,在页面上输入?a=
就会直接弹窗“1”出来。

DVWA xss(DOM) low级别:

先观察Low级别的源码,发现
2020.9.12-web学习笔记1_第1张图片
源码上直接说了是没有任何保护的,那就直接怼上去就可以了。
即在网站输入?default=English

2020.9.12-web学习笔记1_第2张图片

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

2020.9.12-web学习笔记1_第3张图片
可以看到这里多了个stripos()函数,查询资料后可知
Stripos()函数——查找字符串在另一字符串中第一次出现的位置(不区分大小写)
根据源码一定要等于false,否则的话就会返回default。那么我们可以先试用一下刚才的弹窗指令?default=English
发现啥也没有弹出来。也就是说script被过滤掉了。
那我们可以换一种思路,即用漏洞
输入?default=English
回车后,跟刚才的

2020.9.12-web学习笔记1_第9张图片
impossible级别(xss(DOM)漏洞的保护)
2020.9.12-web学习笔记1_第10张图片
意思是,不需要做任何事情,保护在客户端处理。
xss本身在IE上是有保护的,window默认会过滤掉xss,只不过写php的时候基于一些原因会把启用xss筛选器给禁用。

xss(Reflected) low级别:
2020.9.12-web学习笔记1_第11张图片
依然没有任何防御,直接怼。

<script>alert(1)</script>

2020.9.12-web学习笔记1_第12张图片
medium级别
2020.9.12-web学习笔记1_第13张图片
出现了个str_replace()函数。
str_replace()函数以其他字符替换字符串中的一些字符(区分大小写)
因为区分大小写,所以可以用大小写绕过

<sCript>alert(1)</script>

2020.9.12-web学习笔记1_第14张图片
或者可以用ript>alert(1)
2020.9.12-web学习笔记1_第15张图片

high级别
2020.9.12-web学习笔记1_第16张图片
这里出现了个正则匹配preg_replace()
preg_replace 函数执行一个正则表达式的搜索和替换。
如:

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

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

你可能感兴趣的:(笔记,php)