xss-labs

xss-labs下载地址:GitHub - do0dl3/xss-labs: xss 跨站漏洞平台

目录

level1

level2

level3

level4

level5

level6

level7

level8

level9

level10

level11

level12

level13

level14

level15

level16

level17

level18

level19

level20


level1

猜测使用GET传参,将name显示在界面上,并且显示name的长度

直接将name重新赋值:

<script>alert('xss')</script>

成功

查看源码

发现直接将GET方式的name返回,没有任何的安全防护

level2

类似于上一题,传参方式依然为GET,只不过是加入的搜索框和“搜索”

测试:

<script>alert('xss')</script>

并没有我们想要的结果,然后我们查看源码

发现<和>被编码变成了html字符实体

但是我们发现,在下面的value中,输入的恶意代码没有被改变,我们就从下面来入手

构造

"><script>alert('xss')</script>//

说明:这里前面的">用来闭合value中前面的"<,//用来注释value后面的">

另外,查看源码可以得到

htmlspecialchars()函数:把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体

并且下面的value确实也没有经过任何的过滤

level3

类似于上一题,进行简单测试

<script>alert('xss')</script>

和上一题一样,页面并没有我们想要的结果。

查看源码

这次两个都做了转换

我们可以通过事件标签触发表单执行

'onmouseover='alert(/xss/)

onmouseover 事件会在鼠标指针移动到指定的元素上时发生。 

在提交之后,没有立刻弹出。将鼠标移动到文本框,触发弹窗

查看源码

level4

测试

<script>alert('xss')</script>

页面并没有弹窗。查看源码

发现对<和>进行了过滤

发现对<和>进行了置空

模仿上一关

"onmouseover="alert(/xss/)

查看源码

level5

首先进行最简单的测试

发现

测试

"onmouseover="alert(/xss/)

发现

 猜测是对script和onmouseover进行了部分的替换

查看源码

strtolower()函数:把字符串转换为小写

这里过滤了大小写,并且将script和on进行了改写

试试javascript

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

点击即可

level6

进行简单的测试

和上一关很像

使用上一关的方法进行测试

这次把href也改写了

进行大小写的绕过

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

成功,看来是没有过滤大小写

查看源码

可以看到,上面都进行了改写替换,但是没有过滤大小写

level7

进行简单测试

发现和前面的不一样,这里直接将script置空了

发现将on也置空了

尝试使用双向进行绕过

"oonnmouseover="alert(1)

成功

level8

进入发现这里有一个“友情链接”,点进去查看

尝试上面的方法

源码:

发现对前面的方法都进行了过滤

下面尝试使用Unicode编码进行绕过

javascript:alert(1)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

成功

level9

经过简单的测试,发现

都会有这么一句话

查看源码:

strpos()函数:查找字符串在另一字符串中第一次出现的位置。

这里就是查找在$str7中是否有  http://

这关同样可以使用Unicode编码就行绕过

java&#115;&#99;&#114;&#105;&#112;&#116;:alert('http://')

成功

level10

 简单测试

发现下面多出来三个hidden属性

查看源码

发现我们构造的keyword在过滤后会传入在t_sort处

我们可以在前端修改hidden为text

然后输入

"onmouseover="alert(1)

之后再次修改为text 

成功

level11

可以看到和上一关很相似

测试这里的t_sort,类似于上一关

发现t_ref也发生了变化

使用上一关的方法同样可以过关

也可以修改下面这个

最后看一下源码

相比前面多出来一个HTTP_REFERER,经过简单过滤后传入了t_ref

level12

这关又多出来一个t_ua

发现也就是这里的User-Agent

修改即可

看一下源码

level13

本关多出来了t_cook,猜测是cookie

使用Burp进行抓包

修改这里的cookie

"type="text" onmouseover="alert(1)

源码和前面差不多

level14

这道题有问题,跳过

level15

查看源码

发现了不一样的东西

查看源码

ng-include是 angular js中的东西,其作用相当于php的include函数

ng-include的用法:

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

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

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

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

    值得注意的是:

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

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

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

可以构造

'level1.php?name=<a href="javascript:alert(/xss/)">'

点击即可 

 

level16

简单测试

发现

script和/script都被置空了

尝试

<img src=1 onerror=alert(1)>

发现

空格也被转换了

使用%0a代替空格,%0a的含义是换行

<img%0asrc=1%0aonerror=alert(1)>

看一看源码

果然都被替换了

level17

发现是通过arg01和arg02进行传参

发现两个参数是直接拼接在一起的

我们提交的两个参数的值出现在了<embed>标签的src属性值中

直接构造

arg01=a&arg02=b%0aonmouseover=alert(1)

最后看一下源码

没有很复杂

注:没有触发弹窗可以换个浏览器再尝试

level18

这里和上一关差不多

尝试和上面一样的方法

直接就成功了...

看一下源码

和上一关几乎没有区别...        

level19

发现这一关比前面在src处多了双引号

如果想要成功执行js代码肯定需要去闭合标签,但是此处应该还是会用

htmlspecialchars()函数进行处理,所以无法成功闭合。

参考:XSS-labs Level 19 Flash XSS_baynk的博客-CSDN博客

arg01=version&arg02=<a href='javascript:alert(/xss/)'>xss</a>

答案是这么写的,但是我没有复现成功....

看一下源码

level20

看上去和前面差不多

看一下源代码

不能说毫无关系,只能说一模一样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值