当前位置: 首页 > news >正文

XSS中DOM型注入技巧

XSS中DOM型注入技巧

  • 练习
    • Ma Spaghet!
    • Jefff
    • Ugandan Knuckles
    • Ricardo Milos
    • Ah That's Hawt
    • Ligma
    • Mafia
    • Ok, Boomer

练习

练习网站: https://xss.pwnfunction.com/

Ma Spaghet!

在这里插入图片描述
题目总体要求:它说要弹出1337,不能有用户的交互,其实就是不能让用户点击触发,比如a标签,让它自动触发

分析:有个url的类进行get的传参,有参数就接受,没参数就是 Somebody,再放到innerHTML里面,,这里问题就是传递的参数直接放到html标签里面去了,就跟反射型一样,对用户传递的参数没过滤好直接传进去了

看看innerHTML标签

官网地址: https://developer.mozilla.org/zh-CN/docs/Web/API/Element/innerHTML

script标签被禁用了,但是可以换其他的,比如img标签,前面是是一个不存在的图片路径,找不到1的图片路径,就触发onerror

 
?somebody=<img src=1 onerror="alert(1337)">

在这里插入图片描述

防御的话可以换成innerTEXT,它会自动把 < 进行实体编码,这样就不会进行标签开始状态,不会被转移,只当作文本

Jefff

在这里插入图片描述

setTimeout定时器,执行一次,还有个定时器setInto循环执行
这里innerText就不用看了,看看eval这里能执行不,先进行闭合",再执行1337再闭合"

  ?jeff=aaa";alert(1337);"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样就是分别执行,会显示aaa


还有就是可以js中的特殊连接符-

?jeff=aaa"-alert(1337);"

在这里插入图片描述
在这里插入图片描述

但是这里是将所以的东西当成一个执行

Ugandan Knuckles

在这里插入图片描述

这里看到input想到单引号闭合实现onclick,但是这里是点击才行,那就是在input里跟用户不交互实现的,那就是onfocus,获取焦点,input本身就有焦点,但是触发的时候还是需要用户去点才能触发,那就还有个autofocus自动对焦
在这里插入图片描述
这就是焦点
在这里插入图片描述

在这里插入图片描述

?wey=aaa" onfocus=alert(1337) autofocus=";

在这里插入图片描述

Ricardo Milos

在这里插入图片描述
这里看到action,有个action的伪协议事件,而这里是两秒后自动提交
在这里插入图片描述
在这里插入图片描述

?ricardo=javascript:alert(1337)

在这里插入图片描述

Ah That’s Hawt

在这里插入图片描述
这里过滤了一下东西,这里还是用的innerHTML,但是这里过滤了括号,那函数触发不了了

在这里插入图片描述

在这里插入图片描述
那加上%28 %29呢
在这里插入图片描述

这里用%28 %29也被编码了,括号没有了,那加上25呢
在这里插入图片描述
还是没有解析,这里是onerro是在js的语法里面,解析不了urlcode,之前那个是因为在img标签里面,那我们这里加locatiion试试

?markassbrownlee=<img src=1 onerror=location="javascript:alert%25281337%2529">

在这里插入图片描述

Ligma

在这里插入图片描述
这里字母数字没有了,那就考虑用编码的方式绕过

编码网站: https://jsfuck.com/
在这里插入图片描述
比如这里编码之后还是需要进行urlcode编码,因为有符号,再用burpsuit或者其他的软件urlencode就行了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mafia

在这里插入图片描述
这里还限制了长度,alert函数,那可以换换其他的,比如confirm
在这里插入图片描述
那现在换换其他的,可以试试构造函数也就是匿名函数也就是Function,而function是普通函数
在这里插入图片描述

那就定义一个函数,在例子中是赋了一个变量,也可以不赋,直接执行就行Function()(),执行前面的()

?mafia=Function(/ALERT(1337)/.source.toLowerCase())()

在这里插入图片描述


还有就是parseInt方法,利用进制数返回,进制数是2-36,也就是0-9 + 26个英文字母 =36

parseInt方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt

还有个跟parseInt相反的方法,将进制转成字符串
toString方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

那将alert进行parseInt的转换
在这里插入图片描述
t是最大的在20
30进制? 0-9 + 20 = 30

?mafia=eval(8680439..toString(30))(1377)

在这里插入图片描述


location.hash方法

eval(location.hash.slice())

location.hash将#后面的值取出来,再用slice截取函数截取后面#的内容

在这里插入图片描述

?mafia=eval(location.hash.slice(1))#alert(1337)

在这里插入图片描述

Ok, Boomer

在这里插入图片描述
这里用了DOMPurify框架,那就往下setTimeout()方法试试
setTimeout方法: https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout

在这里插入图片描述

在这里插入图片描述

eval() 函数会将传入的字符串当做 JavaScript 代码进行执行

在这里插入图片描述
将想要的操作放在字符串里
但是要看看框架的东西
DOMPurify框架白名单: https://github.com/cure53/DOMPurify/blob/main/src/regexp.js

在这里插入图片描述

javascript在框架里面,试试白名单里面的

?boomer=<a id=ok href="cid:alert(1337)">
ok是为了走进函数里面

在这里插入图片描述


http://www.mrgr.cn/news/4737.html

相关文章:

  • Linux入门——08 进程间通讯——管道
  • Total Commander 右键卡死问题,百度云冲突
  • 数学基础 -- 线性代数之排列及其逆序数
  • 云计算实训34——docker环境配置、镜像基本操作、容器基本操作、设置远程连接管理
  • 企业为什么需要安装加密软件
  • 亚马逊测评号生存法则:如何抵御亚马逊封号风波?
  • LeetCode面试题Day12|LC209 长度最小的子数组、LC30 串联所有单词的子串
  • 【cocos creator】2.x里,使用3D射线碰撞检测
  • JS SyntaxError: Unexpected token 报错解决
  • ant design pro 技巧之实现列表页多标签
  • Apache CloudStack Official Document 翻译节选(三)
  • 梦与不存在的幻境
  • 数据库原理--关系1
  • 【原创】java+swing+mysql房屋租赁管理系统设计与实现
  • Java基础核心知识学习笔记
  • 跟着GPT学习 Kubernetes ,简称 K8s(二)
  • 【MySQL】mysql异常宕机无法启动处理过程
  • Autosar_MCAL_Adc
  • UE5.4 - 下载和安装
  • Day45 | 99.岛屿数量 深搜 广搜 100.岛屿的最大面积