xss靶场详解

目录

1.第一题

2.第二题

3.第三题

4.第四题

5.第五题

6.第六题

7.第七题

8.第八题


1.第一题

在源码script标签里边,innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的,这里是访问spaghet这个元素的,并通过括号里面的东西搜索当前页面有没有somebody这个参数,有的话使用get传参的方式给somebody传一个值,然后+Toucha Ma Spaghet!,如果没有传值,默认传Somebody+Toucha Ma Spaghet!,然后赋值给spaghet,放在h2标签中,显示出来。

因为他利用innerHTML直接更新somebody参数,所以我们可以利用

?somebody=<svg%20οnlοad=alert(1337)>在svg加载完成以后执行我们的xss代码

2.第二题

在这里面我们get传入jeff的值给jeff,然后ma是空,eval执行ma=ma name 传的值,然后settimeout延时1秒把ma赋值给manme.

        因为这次使用的是innertext,他会把我们的标签整个识别成一个字符串输出就不能用一开始的

我们可以把eval进行闭合

?jeff=aaa";alert(1337);"

带入就会是这样,前后引号都闭合了,eval就执行alert

`ma = "Ma name aaa";alert(1337);"" `

3.第三题

 replace是用来移除wey 中的所有 < 和 > 字符。

  • /[<>]/g 是一个正则表达式,匹配 < 或 > 字符。
  • g 是一个全局标志,表示将会在整个字符串中查找所有匹配的字符,而不仅仅是找到第一个匹配后就停止。

这里因为过滤了<>,我们不能用先前的方式了,所以我们使用onclick进行聚焦,只要用户点击输入框就会触发

同样的还有onfocus也是需要用户进行点击

        为了不让用户交互也可以完成,我们可以用autofocus和onfocus一起,autofocus把焦点放在输入框上,onfocus把焦点事件进行触发,单独使用autofocus不会触发焦点事件,并且autofocus不包含代码。

        所以要用?wey=aaa"%20οnfοcus="alert(1)"%20autofocus="

4.第四题

因为这里面有用action进行提交,并且没有过滤,在提交的时候可以触发我们传入的xss代码,同样在<a>标签里面我们也可以把href写入<a href="javascript:alert('Hello!')">,这样用户点击链接就会触发

?ricardo=Javascript:alert(1337)

5.第五题

因为括号等东西被过滤了,我们就要考虑绕过,尝试用编码绕过

把(1337)先用html实体编码再用url进行编码

成功绕过

?markassbrownlee=<svg%20οnlοad="alert%26%23x0028%3B%26%23x0031%3B%26%23x0033%3B%26%23x0033%3B%26%23x0037%3B%26%23x0029%3B">

6.第六题

这里过滤掉了字母数字,我们就只能借助一些别的工具和别的编码

https://jsfuck.com/

这个网站会把我们的输入编码为[] ! +组合

但是+好会被解析为空格,所以还要进行url编码

7.第七题

这里可以直接用

?mafia=confirm(1337)

但是真正的考点不是这个

我们可以通过

Function(/ALERT(1337)/.source.toLowerCase())()

绕过

    /ALERT(1337)/ 是一个正则表达式,用于匹配字符串 "ALERT(1337)"

    .source 属性返回正则表达式的源码部分,不包括前后的斜杠,即 "ALERT(1337)"

    toLowerCase() 方法将字符串中的所有字母转换为小写。

因此,/ALERT(1337)/.source.toLowerCase() 返回  alert(1337)

Function 是一个构造函数,用于动态创建一个新的函数。

Function("alert(1337)") 会创建一个函数

最后,() 用于立即调用刚刚创建的函数。

8.第八题

这里面有DOMPurify框架,很难绕过

但是setTimeout函数内的ok参数没有任何ok定义,所以我们可以使用DOM破坏

  

由于前端的一些特性,当boomer=<a id=ok href=tel:alert(1337)>时,settimeout(ok,2000)会获取到<a>标签的href内容,并执行,所以我们可以利用这个来进行绕过,但是如果是JavaScript:alert(1)的话,会被DOMPurify框架进行过滤,我们可以在他的文件找到白名单,然后利用白名单执行我们的alert(1337)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值