xss.haozi.me练习通关

靶场连接就是xss.haozi.me

0x00

这一关也没有啥限制,就直接输出就可以了

< script>alert(0)< /script >

在这里插入图片描述

0x01

这一关的输出是在< textarea >标签里面的,但是这个标签只能输入文本,所以只能先将标签闭合,然后进行弹窗。

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

在这里插入图片描述

0x02

这个就是将input标签先闭合上,然后再进行输入弹窗就可以了。

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

在这里插入图片描述

0x03

这一关是将括号给过滤掉了,也就是说alert()的括号不可以直接打印出来,所以这里可以采用两种方式,一种是编码的形式,另一种就是使用反引号来代替括号。

< script>alert& #40;1& #41;< /script>
< script>alert`1`< /script>

在这里插入图片描述

这里使用的``是模板字符串,所以针对这个可以细分知识点。
1.模板字符串的用法:
`string text`
`string text line 1`
`string text line 2`
`string text ${expression} string text`
tag `string text ${expression} string text`

最后一个为带有标签的字符串,可以将他分为一下四种情况:
2. eval `$prompt(1)} `
js中,eval只有在字符串的情况下才会进行全局寻找,如果是其他型是的则会直接原样返回
在这里插入图片描述
t他的返回结果是:
在这里插入图片描述
这个过程中,模板字符串是先执行函数在执行eval,首先模板字符串的左右是没有值得,所以这返回的是空值,然后函数返回的是我们刚刚输入的aaa,eval收到了2个参数,一个是空的数组,另一个就是aaa,但是eval只能接收一个值,所以接收的是先回来的空数组,所以这里返回的就是空值。
3.eval`{‘prompt(1)’}`
在这里插入图片描述

这个过程和上一个是一样的,也是先执行模板字符串然后再执行eval,但是在执行prompt的时候,他是当做字符串进行输出的,所以他是不能弹窗的,这样的情况下也是传回了2个值,但是eval只能接收一个,所以接收的也是空数组。
4.eval.call`${‘prompt’}`
在这里插入图片描述
这种情况可以看到是有弹窗的,并且返回的值是:
在这里插入图片描述
这里和前两个的区别就是多了一个call方法,
call方法的作用:可以改变this的指向,如果执行的第一个值为空值得话,eval指定的是全局,但如果不是的话,则将该数作为定义的名字进行查找。
所以这个也是先执行模板字符串,他也是将{}里面当做了字符串,然后返回的依旧是空数组和弹窗所输入的值,然后call方法可以接受两个值,而这里也返回了两个值,第一个值为空,所以this指向了全局变量,全局变量里面是有prompt这个函数的,所以返回的就是咱么刚刚输入的那个值。

5.eval.call`prompt(1)`
在这里插入图片描述
这个返回的是prompt(),不是空值,所以指向的不是空值了,但是,==在eval的官方文档中有一句话就是:因为eval的别名调用的形式五花班恩,只要不是直接调用,都属于别名调用,又因为引擎只能分辨eval()这一种形式是直接调用,所以可以默认为调用后的作用域依旧是别名。==所以仍然是全局里面查找,然后又没有给prompt传值,所以是undefined。
6.eval.call`${prompt(1)}`
在这里插入图片描述
这个可以将弹窗执行出来,但是返回的结果是:
在这里插入图片描述
这里依旧先执行模板字符串,这里的字符串是可以弹出的,并且给她的返回值是bbb,这里传回的两个值是空数组和bbb,因为使用了call方法,并且第一个返回值是空,所以指向了全局变量,但是在全局中没有定义bbb,所以返回的是bbb is not defined。如果定义了bbb,则返回的结果就是你定义的那个值。
这里就可以看到,我先定义了bbb是123,在此执行的时候,返回的值就是123了。在这里插入图片描述

0x04

这一关和上一关相同,但是它把反引号也过滤了,所以就只能使用编码的方式了。

< script>alert& #40;1& #41;< /script>

在这里插入图片描述

0x05

这一关将注释符号(–>)过滤成了一个笑脸的表情,但是我们又需要把注释给闭合上,所以可以使用另一种注释的符号(–!>)

–!>< script>alert(1)< /script><!–

在这里插入图片描述

0x06

这里将auto或者on过滤成了_,并且是在input标签输出,所以这里可以将type的值改成imge的形式进行输出,并且使用换行的方式来停止以on开头=结尾变成_。

type="image"src=1 onerror
=alert(1)

在这里插入图片描述

0x07

这一关过滤了标签符号,所以没有办法写标签,也没有办法闭合。但是html中img标签是可以不写后面的“>”,因为它有一种纠错机制,

<img type=“image” src=1 οnerrοr=alert(1)//

在这里插入图片描述

0x08

这一关限制了不可以对style标签进行闭合,一旦出现< /style>会转变为“坏人”,但是html中将标签换行也是可以识别的,所以可以换行处理标签。

</style

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

在这里插入图片描述

0x09

这一关必须以https://www.segmentfault.com为开头,否则不能输入,然后就将script标签闭合在写点击事件就可以了。

https://www.segmentfault.com">< /script><svg/οnlοad=alert(1)< script>

在这里插入图片描述

0x0A

这里可以使用@的小技巧。
以@分隔的话前面表示的是用户名和密码,后面表示的是登录的网站和端口,也可以以表示重定向到第二个网站。
在这里插入图片描述

0x0B

这里用到了将所有字母转大写。可以使用编码来转换。

< svg/οnlοad=& #97;& #108;& #101;& #114;& #116;(1)>
在这里插入图片描述

0xC

这一关过滤了script,并且将字母转为大写。可以使用编码来进行。

<svg/οnlοad=& #97;& #108;& #101;& #114;& #116;(1)>

在这里插入图片描述

0x0D

这关过滤了斜杠,但是要闭合注释,所以和使用换行的方式。

alert(1)
–>

在这里插入图片描述

0x0E

这关和第10关很解法相似,都是指定到其他地方进行调转。

https://www.segmentfault.com@127.0.0.1/te.js

在这里插入图片描述

0x0F

这一关就是将一些符号进行了编码;但是这也是可以识别的,所以就是将src闭合,然后写弹窗,然后将后面注释

aaa’),alert(1)//
在这里插入图片描述

0x10

这里就是直接输入,所以可以直接输入

alert(1)

在这里插入图片描述

0x11

这关将一些字符转换了,也是先将那个闭合,然后进行弹窗。

"),alert(1)//

在这里插入图片描述

0x12

这一关将"过滤成了",所以可以使用转义符号将先将\转义,就可以过关了。

"),alert(1)//

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值