复现dom破坏案例和靶场

目录

Ma Spaghet!

Jefff

Ugandan Knuckles

Ricardo Milos

Ah That's Hawt

Ligma

Mafia

Ok, Boomer

Ma Spaghet!


输入后没有弹窗

问题出在innerhtml,查询

优化建议使用innerTEXT

Jefff


使用了innertext

人话---innerText是一个用于获取或设置元素中纯文本内容的属性。与innerHTML不同,innerText只处理文本内容,不会包含任何HTML标签或子元素的标记。

标签被限制就不适用新标签,闭合

Ugandan Knuckles


替换<>

使用上个代码,结果如下,这样不识别

<input type="text" placeholder="111";alert(1137); class="form-control">

用常用的方法onclick

wey=111"%20οnclick="alert(1337);     //可以执行,但不允许用户交互,不通过

使用onfocus焦点和autofocus聚焦

?wey=111"%20οnfοcus=alert(1337);%20autofocus="  

 

Ricardo Milos


两秒后后自动提交,action可以执行js

Ah That's Hawt


替换了如上一堆符号,最先想到编码,使用location

关于location的解释

location 是 JavaScript 中的一个全局对象,代表当前页面的 URL。通过操作 location 对象,开发者可以获取或修改当前页面的 URL,从而实现页面跳转或刷新。

在这段代码中,location 被用来改变当前页面的 URL。代码试图通过将 location 设置为一个 javascript: URL 协议来执行 JavaScript 代码。

javascript
复制代码

location="javascript:alert(1337)"

这个表达式的意思是,将浏览器重定向到一个 javascript: 协议的 URL,并在其中执行 alert(1337),即弹出一个显示 "1337" 的提示框。

%2528 是 URL 编码的一部分。

% 后面的数字表示 ASCII 字符的十六进制编码。具体来说:

%25 是字符 % 的编码。
%28 是字符 ( 的编码。
在这个 URL 中,%2528 实际上表示 (%28) 的 URL 编码形式。第一次解码后,%2528 变成 %28,进一步解码后,%28 才变成 (。

也就是说,%2528 是经过两次编码的字符 (。这个双重编码的目的是为了绕过某些简单的安全过滤器,防止代码被识别和过滤。

Ligma


替换,继续编码

JSFuck - Write any JavaScript with 6 Characters: []()!+

在URL编码

Mafia


使用Function构造函数source.tolowercase转小写

或转30进制

第三种,location.hash截取井号后面,slice(1)从第一位开始截取

Ok, Boomer


DOM破坏,用a标签时href自动调用tostring方法取出当中字符串

settimeout可以把函数当做字符串放入并执行,javascript被过滤换成tel

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值