Xss高级

目录

Ma Spaghet!

Jefff

 Ugandan Knuckles

Ricardo Milos 

Ah That's Hawt 

Mafia


推荐一个比较有意思的xss网站XSS Game - Learning XSS Made Simple! | Created by PwnFunction

Ma Spaghet!

 代码通过get传参,并且提示在somebody中输入,我们直接在somebody中插入script脚本检测能否运行.

  可以看到,我们的script标签插入成功但是却并没有运行,而且在h2标签下是可以运行script脚本的。通过查阅官方文档element.innerHTML - Web API 接口参考 | MDN ,HTML 5 中指定不执行由 innerHTML 插入的 script脚本,官方文档提示,我们可以插入img标签进行绕过。

 

Jefff

  这关的突破口在eval下的模板字符串,eval会将传入的字符串当做做javascript脚本来执行,模板字符串的运行顺序模板字符串 - JavaScript | MDN,这里定义了一个ma,执行语句为eval(`ma="ma name ${插入的语句}"`,如果直接插入alert其实就相当于执行了ma的值而只会显示一个字符串,所以这里必须考虑先将eval(`ma=“${" jeff}"`)中分割,这样做就相当于闭合了前面的ma,让eval直接执行alert。
 

 Ugandan Knuckles

 代码过滤掉了尖括号,所以我们想闭合input标签是不可能的,而且调用了innerhtml函数,我们考虑用onclik标签,

但是官方限制no user interaction,所以我们考虑自动对焦来取消互动 

Ricardo Milos 

  代码使用了action,表单的 action 属性是在服务器上提交表单,这个属性可以被检索或者设置,没有过滤限制,所以直接使用JavaScript伪协议绕过。

Ah That's Hawt 

  本段代码几乎过滤掉了所有可以使用的符号, 所以想闭合标签是不可能的,我们可以考虑使用代码来绕过。这里并没有限制编码,但是我们应该注意一下编码顺序,我们的插入点必须在url网址搜索框中去插入语句,这里识别url编码,而网页面则识别实体编码,所以我们的顺序应该为要将语句插入网页面识别执行,那么你首先得在url搜索框中让它识别url编码,所以得先进行html编码再进行url编码。

    本代码过滤掉所有字母大小写,以及数字0-9,我们只能使用工具jsfuck来进行绕过,JSFuck - Write any JavaScript with 6 Characters: []()!+,我们直接编码alert(1337),然后再进行一次URLencode即可绕过。

Mafia

 

   此代码过滤掉了几乎所有可以闭合的符号,以及关键命令alert,而且有长度限制,jsfuck不可取,我们此时可以采用三十进制来解决问题。我们会用到parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。但是注意在插入时虽然它是在eval中执行的但是还是没有执行成功,你需要再添加一个eval,去让外面的eval执行里面的eval(8680439..toString(30))(1),作者的答案中还有两种解法,其中第三种方法利用了window.location.hash这个属性,该接口的hash属性 Location返回一个字符串,该字符串包含一个 '#'后跟 URL 的片段标识符 - URL 试图定位的页面上的ID。parselnt可以参考parseInt - JavaScript | MDN

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值