xss挑战之旅

一、使用docker搭建xss挑战之旅的运行环境

  1. docker search XSS-challenge-tour查看镜像

  1. docker pull下载镜像

  1. docker images查看本地镜像库

  1. docker run -d -p 96:80 镜像名,运行镜像;docker ps查看容器进程

  1. 浏览器访问页面

二、复现xss挑战之旅level1-level3。

第一关

(1)它是向服务器提交了一个 name 参数,值为 “test” ,从页面回显来看,将 neme 参数的值显示在了页面上,并且显示了 name 参数值的字符长度

第二关

(1)从 url 入手开始看,依然是 get 方式传递参数,应该还是反射型 xss,只不过这一关加入了 “ 输入框 ” 和 “ 搜索 ”,接下来查看网页源码

(2)从源码来看,它的功能就是通过点击“ 搜索 ” 按钮,将输入框内的内容以 get 方式提交给服务器上的level2.php,经过服务器的动态处理之后又会将参数keyword 的值插入到 <h2> </h2> 标签之中以及添加到<input> 标签中的 value 属性的值内。尝试使用上一关的恶意语句操作进行弹窗。

(3)但是报错了我们继续查看网页源码

(4)可以看到在<h2> </h2> 标签之中的恶意代码被编码了,其中< 和 > 都被编码成了 html 字符实体。猜测在服务器端用htmlspecialchars() 函数 对 keyword 参数的值进行了处理。

(5)接着往下看可以看到插入到value 参数值中的恶意代码并没有被编码而是直接原样返回 但是问题是这里的 js 代码在标签属性值中,浏览器是无法执行的。

(6)既然上面的恶意代码被编码了,那么只能从属性值中的恶意代码处进行突破了。要想浏览器执行这里的弹窗代码,只需要将属性的引号和标签先闭合就可以了。

(7)将keyword 的参数值重新赋值:"><script>alert('xss')</script>//

第三关

(1)这里输入第一关的参数进行测试

(2)出现报错,我们查看源代码

(3)可以发现转义了尖括号,这里可以用单引号闭合value但是没办法闭合input标签,但是可以注释掉标签然后用事件弹窗

(4)发现没有直接弹窗,这是因为onfocus事件的特殊性造成的最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件,因此点击当前页面的输入框就可以完成弹框了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值