dvwa学习笔记——反射型xss

一、XSS的形成原理

xss中文名“跨站脚本攻击”,

xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击信息泄露。

常见危害:cookie窃取,session劫持,钓鱼攻击,蠕虫,ddos等

二、XSS的分类

1、反射型xss

反射型xss一般出现在URL参数中及网站搜索栏中,由于需要点击包含恶意代码的URL才可以触发,并且只能触发一次,所以也被称为“非持久性xss”

过程:攻击者在URL中插入xss代码,服务端将URL中的xss代码输出到页面上,攻击者将带有xss代码的url发送给用户,用户打开后受到xss攻击

在DVWA环境下练习 

LOW源码:

漏洞分析与利用:

通过GET方式获取name值,且并未对name值进行处理,导致此处可以进行js脚本注入。

构造js脚本:

<script>alert(/反射型xss/)</script>

执行脚本

浏览器上观察执行后的url:

dvwa/vulnerabilities/xss_r/?name=<script>alert(%2F反射型xss%2F)<%2Fscript>#

可以看到页面的请求方式就是通过GET请求。

标签定义及使用说明

<script> 标签用于定义客户端脚本,比如 JavaScript。

<script> 元素既可包含脚本语句,也可以通过 "src" 属性指向外部脚本文件。

JavaScript 通常用于图像操作、表单验证以及动态内容更改。

medium源码:

漏洞分析与利用:

medium源码相对于low级别的源码,区别在于增加了str_replace函数,基于黑名单思想,将<script>替换成空字符,若按照之前的js脚本执行会不成功,这里可以多写入一个<script>,把中间的<script>标签替换为空之后 <scri 与pt>重新组合一个<script>,成功执行代码。

也可以利用大小写来绕过过滤,如<ScriPt>

或者可以构造别的标签 如<img src=0 οnerrοr=alter(/xss/)>(当src不成立时,触发onerror事件,执行alter(/xss/))

构造脚本:

<scri<script>pt>alert(/反射型xss/)</script>

执行脚本

str_replace() 函数:字符替换(区分大小写)

该函数区分大小写。 str_ireplace() 函数执行不区分大小写。

该函数是二进制安全的。

high源码:

漏洞分析与利用:

pre_replace函数执行一个正则表达式的搜索与替换。从<开始,匹配script字符以及穿插在script之间的各种字符组合(意思是只要有script这六个字符一起出现,可以不连续,都将匹配出来被替换成空字符),最后的i表示不区分大小写。这样按照上面的思路多写一个script无法绕过这个黑名单,<scrscriptipt>可以匹配出来。

此时,只能使用其他标签,如<img>.

构造脚本:

<img src=0 onerror=alert(/反射型xss/)>

执行脚本:

impossible源码:

漏洞分析与利用:

impossible级别的代码先判断name是否为空,不为空的话然后验证其token,来防范CSRF攻击。然后再用htmlspecialchars函数将name中的预定义字符转换成html实体。

源码使用htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

函数预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

该函数会把输入的<script>,或<img>标签转换成实体直接输出,这样标签就无法发挥作用了。

impossible级别是安全代码,无法绕过。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值