什么是XSS攻击?

XSS攻击是指网页开发时留下的漏洞,通过一些方法注入恶意指令到网页,使用户加载并使用恶意制造的网页程序

XSS的分类

  • 反射型XSS
    (非持久型),攻击者需要诱导用户点击链接,XSS代码出现在URL中,然后服务器进行解析,解析后XSS代码才会攻击(只经过服务器,不经过数据库)

  • 存贮型XSS
    (持久型),XSS代码发送到服务器,数据库,文件系统,然后在下次页面请求的时候无需带上XSS代码(经过服务器,存入数据库)危害最大

  • DOM型XSS
    修改页面DOM节点形成的XSS,无需浏览器解析,只需要客户端就行

level 1

首先我们点击图片

我们看提出的要求:payload的长度为4

首先,我们查看一下网页源代码,我们可以发现,通过GET传参,但是下面的str直接传入没有进行过滤

点击F12,使用hackbar,我们将使用一个简单的XSS语句将test替换掉
使用XSS辅助的工具:

点击后直接出现http://127.0.0.1/XSS/level1.php?name=<script>alert(1)</script>我们直接执行
level 1通过

level 2

点击确定,我们来到了第二关
可以看出,第二关使用的是POST传参

首先,我们和上一关一样,将test删去,然后将XSS辅助代码放进去执行,我们可以发现,依旧执行失败

所以接下来我们查看一下网页源代码,我们可以发现,在这个地方,有一个转译符号

但是在下面传值运算时并没有进行转译

  • 方法一:

所以,为了激发XSS,且我们观察到value后面有一个双引号,所以我们就直接进行双引号闭合所以我们应该直接在keyword=后加上"尝试一下执行
明显的,没有编译成功

其实原因就出在了有一个>没有闭合,我们要注意这个细节
下面就是添加这个> 即http://127.0.0.1/XSS/level2.php?keyword="><script>alert(1)</script>

编译成功

我们找出level 2的源代码进行查看,我们可以看出,level2和level1一样都是使用GET方法传参,但是,在level2中,使用了一个html的函数

htmlspecialchars()函数的用法

功能:将预定义字符转化为HTML实体

  • 将&变为&amp

  • 将"变为&quot

  • 将 '变为 ’ (没变)

  • 将<变为&lt

  • 将>变为&gt

  • 方法二:
    使用鼠标划过输入框,输入之后当鼠标移动到这个位置时,即可弹出
    keyword=" οnmοuseοver=alert(1)>

  • 方法三:
    使用鼠标点击输入框,输入之后当鼠标点击到这个位置时,即可弹出
    keyword=" οnclick=alert(1)>

level 3

通过查看源代码可以看出,第三关上下都用了htmlspecialchars()函数

我们已经知道,htmlspecialchars()函数不会对单引号进行转义,所以我们可以利用单引号来进行测试
首先进入第三关,我们可以先随意输入一些东西,然后单击右键查看源代码

这时我们看values值会发现,xiaofu是被单引号包裹起来的

这时我们查看文本中的代码:

所以我们进行了如下操作:
输入keyword="><script>alert(1)</script><"
我们可以发现,虽然闭合是成功了,但是并没有弹出命令框,这是为什么,单击右键查看源代码,发现双引号与尖括号均被转义

所以我们要替换方法:
首先,我们尝试着输入**'onclick =alert(1)**但我们发现并没有回西安,所以我们认为,后面有一个单引号没有被闭合

所以我们本关采用的方法是 使用注释符进行绕过

JavaScript的注释符:

1.多行注释:/* */
2.单行注释://
3.单行注释:<?- 少见,且易与html的注释混淆

  • 方法一:
    keyword= ’ onclick =alert(1) //
    keyword= ’ onclick =alert(1) / hacked by xiaofu/**
    keyword= ’ onclick =alert(1) <?-

  • 方法二:
    keyword= ’ onmouseover =alert(1) //
    keyword= ’ onmouseover =alert(1) / hacked by xiaofu/**
    keyword= ’ onmouseover =alert(1) <?-

  • 方法三
    将单引号进行闭合绕过
    keyword= ’ onmouseover =alert(1) '

level 4

来到第四关,首先,我们来查看一下第四关源代码

str_replace()函数的用法

str_replace()以其他字符替换字符串中的一些字符(替换时区分大小写)
str_ireplace()函数不区分大小写

在这里我们发现,该代码将<和>全部替换为空格,并且使用了htmlspecialchars()函数,以至于<和>均不可用

首先我们将参数换成XSS Alert代码进行测试:
右键查看源代码:发现<>全部消失,所以我们使用第三关的方法,使用onclick进行测试

由分析可知:只要将前面的双引号闭合后面的双引号闭合或注释掉即可完成本关
keyword= " onclick=alert(1) "

其他构造方法与第三关一致,不再赘述

level 5

strtolower()函数的用法

作用:把所有字符转化为小写
首先依旧是将XSS代码放进去,右键查看源代码:

可发现问题出在了将script换为了scr_ipt我们现在的任务就是绕过它
我们来查看一下第五关源代码:代码将大小写全部统一为小写,然后将script和on过滤为scr_ipt和o_n

且此关没有过滤尖括号,所以本关,我们可以使用伪协议的方法
<a href="JavaScript:;"></a>
因此,本关的构造方法是:
" ><a href="javascript:alert(1)">

点击尖括号,进入下一关
当然,我们也可以进行直接触发操作:
"><iframe src=javascript:alert(1)>

直接弹出1,进入下一关

level 6

还是老样子,加入XSS代码,右键查看源代码,发现与第五关类似,都是script被过滤

我们查看一下源代码:发现,第六关相对于第五关,过滤的东西更多,并没有什么新鲜的东西,同时我们也注意到,使用的函数是str_replace并没有对大小进行过滤

所以我们可以沿用上一关的思路,进行大小写的变化,进行绕过:
" ><a hrEf="javascript:alert(1)">
或者:
"><iframe Src=javascript:alert(1)>

level 7

首先是加入xss代码查看是否可以弹窗,发现无法弹窗

我们查看一下第七关的源代码:我们可以发现,str_replace函数将script,on等字符给过滤掉,将其替换为空,所以在这里,我们所能采用的方法是包裹关键词的方法进行绕过

右键查看源码查看闭合方式:

我们输入以下代码:
" ><a hhrEfref="javascscriptript:alert(1)">
"><iframe Ssrcrc=javasscriptcript:alert(1)>
这里我们补充一个关于关键词包裹的tips:

关键词包裹

使用条件:替换条件下将字符替换为空为不是空格
eg 本关中:

$str2=str_replace("script","",$str);

而不是:

$str2=str_replace("script"," ",$str);

这种情况下我们才可使用关键词包裹的方法
使用方法:必须包含一个完整的被替换的单词
在本关中,有大写和小写字母,这是因为有函数将所有大写字母换成小写字母,所以不用区分

level 8

首先还是老样子,将XSS代码带入查看结果

点击友情链接,结果如下:出现禁止访问

我们右键查看一下源码:

我们来找一下第八关PHP源代码,我们可以发现,本关先是将输入的字符串进行小写转化,然后将一些关键字 script on src data href "进行替换,所以在本关无法使用以上关键词和双引号绕过
本关一共有了两个输出点,第一个输出点采用了htmlspecialchar()实体化,第二个输出点进行7次过滤处理

所以,在这里,我们采用伪协议的方法进行绕过
查看输出javascript:alert(1)
右键查看源码发现确实存在替换现象:所以在这里,我们使用html实体的方法进行绕过

在线转换:https://www.qqxiuzi.cn/bianma/zifushiti.php

将转换后的字符串写入到上面方框中,进行传参,随后添加友情链接,再点击友情链接,即可完成本关。

在添加友情链接时。我们查看一下网页源码:发现href中已被改变

同样的,我们可以将script中任意字母进行编码,同样可以完成本关

html字符实体

html字符实体是以&开头;结尾的字符串
实体名称区分大小写
html字符实体是为了解决以下问题:

  1. 解决HTML代码编写中的一些问题。例如需要在网页上显示小于号(<)和大于号(>),由于它们是
    HTML的预留标签,可能会被误解析为标签。这时就需要将小于号和大于号写成字符实体:
    小于号这样写:&lt; 或 &#60;
    大于号这样写:&gt; 或 &#62;
  2. 键盘上无法打印的符号
  3. 连续的空格

level 9

第九关与第八关类似,所以我们首先将第八关使用的JavaScript代码放进来

执行失败了,我们查看一下网页的源代码:

可以发现,href中显示“您的链接不合法”

我们来查看一下第九关的PHP源代码,可以发现,如果不含有http://的话,就换显示您的链接不合法

所以第九关的方法就是用注释符将http://注释掉:

查看网页源码发现并没有将其替换成您的链接不合法,本关至此成功

level 10

在尝试了直接输入XSS代码失败后,我们查看一下第十关的源代码:

我们可以发现,在第十关中,需要传入两个参数,一个是keyword,另一个是t_sort,并且过滤了<和>,页面中还隐藏了三个元素,并且将前两个替换为空,最后一个值也是过滤了尖括号后的结果,因此我们首先构造最简单的xss代码查看网页代码中的返回信息:keyword=hack by crow & t_sort=<script>alert(1)</script>
我们发现t_sort中的参数中的尖括号确实被过滤掉了:

所以我们构造以下语句进行绕过:keyword=hacked by crow&t_sort=" type="text" onclick=alert(1) //
我们查看一下这时的网页源代码:

这串代码将类型改为text文本类型,并将hidden隐藏类型注释掉
当然,代码也可以写成这样keyword=hacked by crow&t_sort=" type="text" onmouseover=alert(1) //
本关结束

level 11

首先我们先来查看11关的源代码:

我们通过源代码可以了解到对于输入的参数keyword和t_sort进行了关键词过滤,但是对于$ str11到$ str33,将其尖括号过滤掉
相当于传了两个参数,在传入一个refer信息进来
我们任意先传入两个参数keyword=good%20job! & t_sort=<script>alert(1)</script>然后右键查看网页源代码:
这里我们发现t_sort被实体化转码,而t_ref是空

因为在这里$str11接收的是HTTP_REFERER中的内容,所以要在hackbar或者burpsuit下定义HTTP_REFERER的内容:

所以我们使用hackbar的referer功能,将基础的XSS代码放进去,开始执行,我们可以发现t_refer的参数值出现,与10关一样,所以我们在referer中,加上以下两种代码:
" type='text' onclick=alert(1) //
" type='text' onmouseover=alert(1) //
即可完成本关

level 12

查看一下第12关源代码,发现第12关与11关的区别仅在于HTTP_REFERER替换为HTTP_USER_AGENT

所以我们在使用hackbar时只需将代码输在useragent框中即可完成本关:

" type='text' onclick=alert(1) //
" type='text' onmouseover=alert(1) //

level 13

先来查看一下第三关的源代码:在这里我们可以看到,所传值是一个cookie值

所以13关与11,12关一样,只不过变为在cookie中传值

" type='text' onclick=alert(1) //
" type='text' onmouseover=alert(1) //
完成本关

level 14&15

Exif xss

Exif是可交换图像文件格式,是专门为数码相机照片设定的,可记录数码相机的属性信息和拍摄数据
这一类的XSS用的不是很多,待我下去再查些资料

level 16

我们来查看一下第六关源代码:

可以发现,script,空格,/等均被替换为空格符号,但是尖括号没有被替换,所以,我们可以使用尖括号进行绕过
<img src=1 onerror=alert(1)>
但是,在这里,空格被替换为空格符号:

所以,在这里,我们将空格替换为%a0即可完成挑战

XSS Chanllenges笔记相关推荐

  1. XSS学习笔记(未完)

    XSS基础学习 1. XSS 1.1 客户端Cookie: 1.2 XSS攻击类型 1.3 工具/平台 1.4 利用方式 1.4.1 非手工方式 1.4.1.1自动化攻击:beef 1.4.2 手工方 ...

  2. Cross-site Scripting (XSS) 阅读笔记

    本文源自 https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 通过阅读和翻译,并按照自己的理解,整理成如下文档. 概述 XSS ...

  3. XSS学习笔记(一)

    学习来源:https://edu.51cto.com/course/14449.html 靶场地址:https://github.com/zhuifengshaonianhanlu/pikachu 一 ...

  4. XSS学习笔记:XSS Challenges 1-19通关全详解

    前言 学习下XSS 主要是XSS Challenges 平台 共19关 模仿真实xss挖洞的情景,用浏览器中的f12中搜索,找出我们控制的代码所在的位置 思考那些个位置哪个或哪几个位置可以被注入我们想 ...

  5. XSS学习笔记:XSS Game(xss.pwnfunction.com)1-11通关全解

    前言 继续学习XSS 本篇是XSS Game平台的通关全解 1.Ma Spaghet! 源码 一个不安全的方式 直接get传输somebody 输入123看看位置 ?somebody=123 那就很简 ...

  6. XSS笔记-来源于个人思路构造以及网络分享

    XSS渗透笔记 javascript禁用后用于提升漏洞危害,适用于SRC挖掘 "><style>body{display:none}</style> Chrom ...

  7. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  8. 为了圆梦黑客,大学四年自学计算机总结的经验全部无偿分享

    为了圆梦黑客,大学四年自学计算机总结的经验全部无偿分享 毕业参加工作这几年,在不同的公司遇到过不同的团队,也认识了许多不同的人. 身边的同事经常问我:"你成都的啊,川大还是电子科大?&quo ...

  9. 前端Hack之XSS攻击个人学习笔记

    简单概述 **        此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...

最新文章

  1. eclipse 创建maven web 项目
  2. python cms应用生成_Django CMS应用程序H教程
  3. 深入redis内部--事件处理机制
  4. 00后都选哪些大厂?数据盘点00后入职情况,字节跳动门槛低?
  5. 3、常用关键字,变量赋值,多个变量赋值,标准数据类型,数字,字符串,列表,元组,字典,数据类型转换
  6. golang PHP的区别,erlang和golang的区别
  7. Android之替换App桌面图标
  8. 浏览器的cookie和服务器存储的session有什么关联,下面妙文为你解答
  9. ​腾讯内测全新 Tim 3.0,支持微信登录;滴滴顺风车上线夜间服务;Angular 9.1 发布 | 极客头条...
  10. 可行后继路由,可行条件和报告距离
  11. 栈(后缀表达式的理想数据结构)
  12. js上传文件并预览文件内容
  13. 深度学习算法原理——神经网络的基本原理
  14. Windows上免费轻量好用的软件(不定期更新)
  15. android开发 高德地图自定义地图应用【最新】
  16. Costco已来华,会员制电商是否迎来爆发增长期?
  17. 本大三狗处博——为工作消得人憔悴
  18. 关于excel:具有OR条件的SUMIF
  19. 【MATLAB100个实用小技巧】——界面设计(33-43)
  20. Android通过DeepLink方式跳转其他App传递参数

热门文章

  1. “font/woff“ and “font/woff2“ in file “mime.types“
  2. 这是不是你在找的【电销帮手】——人机耦合佳信静默机器人
  3. 腾讯员工绩效被打2星,情绪接近崩溃!大厂“内卷”太凶残......
  4. Base64格式文字解密,加密
  5. 三年时间做到年薪百万,推荐明哥的职场心得
  6. 小白笔记本【函数篇】(updating)
  7. 解决ViewPager嵌套WebView时滑动冲突问题
  8. Android专项测试之崩溃测试(CPU)
  9. 2016阿里巴巴诸神之战创客大赛纪实
  10. 中国银联-银星计划面试经历