渗透测试——XSS(五)

发布于:2022-10-13 ⋅ 阅读:(231) ⋅ 点赞:(0)

目录

一、HTML事件

二、XSS Challenges

第六关

​编辑

第七关

第八关

 第九关

第十关

​编辑

第十一关


一、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>

也过关!

第十一关

我也不知道为啥我进不去,那这个靶场就到这里吧,下篇文章换靶场


网站公告

今日签到

点亮在社区的每一天
去签到