xss过waf的小姿势

今天看大佬的视频学到了几个操作

首先是拆分发可以用self将被过滤的函数进行拆分

如下图我用self将alert拆分成两段依然成功执行

9c6b7e1ac7ca492b86f41c01b2fb30b8.png

 然后学习另一种姿势

<svg id="YWxlcnQoIlhTUyIp"><img src=1 οnerrοr="window['ev'+'al'](atob(document.getElementsByTagName('svg')[0].id))">

这里payload的意思是将eval拆分然后解码执行svg标签里的内容 解读如下

这里img src onerror的意思是加载一个链接加载失败就执行下面的操作

d6d25acf33a74573a5fb5cb186812b21.png

 

然后这个atob()是解码base64

43bd75c6ba3b4ec8bf1b72c5cc13898a.png

可以看见解码出来时alert(xss) 

然后已经知道eval是用来执行操作的window['ev'+'al']是将eval拆分类似self

d526e87786044c5aa1bec52065d8b794.png

c309d947a2ab4ca08a2d291c6cb91438.png 

 self也是同理

f15766e1be714148ae5560de6118aa8f.png

 

现在来分析下面的

(atob(document.getElementsByTagName('svg')[0].id))">

是用什么操作我们用console.log看看他输出的是不是我们理解的意思 这里在payload加上

7c956f83bcaa4951a32bef5016fa0e1b.png

可以看见是和我们想的一样 获取svg第一行第一个id的值然后base64解码 并输出 用eval就可以执行alert的操作

0e4978086c7c44139154f41110ad7332.png

 

接下来这个是用iframe加载伪协议 然后在伪协议增加脏字符来绕过

a28682a5d5bc44e3986cfb40251f9495.png

可以看到这里console.log的内容成功打印出来

这里的脏字符是换行的意思

42f1580083e44ad29c20ee2a2e30180b.png

 

这里是将换行符进行ascii码然后再html实体化编码用此脏字符绕过对javascript检测

可以看见这里直接换行是成功也是成功的同理

2b77cd8e7b8a458591e30529b644b9e2.png

也可以将换行符换成tab键 这里tab键加密之后是

&#9;

90ac7b347ff44e41b05358f11dd6763f.png

然后就是师傅写的一个靶场

cce7372587254e2999318d0efad687cd.png

从这里可以看到将括号替换成了空让alert无法执行 然后将内容输出在注释符后 让输出无法执行操作被注释掉 看起来十分的无解

450c79cb501441b3b32b6c4d1c847ae5.png

 

但是解开也十分简单这里直接使用换行符并进行url编码

%0a

然后括号用反引号代替就可以执行操作了

e80af797453341fda7ba2748088c99b0.png

换行之后就可以逃逸掉 注释符了也是一样成功执行 经过今天学习我发现xss绕过方法千奇百怪许多冷门标签等等都可以如果有写错的地方往大佬们纠正 qq3661629617

 

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>