2020.9.12-web学习笔记1

   日期:2020-09-14     浏览:86    评论:0    
核心提示:学习目标:复习好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传参

学习目标:

复习好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攻击?

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服