找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 90|回复: 0

攻防世界 -- 答题 -- Web -- 高手进阶 -- 22 leaking

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105860
发表于 2022-5-9 18:06:45 | 显示全部楼层 |阅读模式 IP:山东省青岛市 移动

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 mind 于 2022-5-9 18:35 编辑

1.png

2.png


这是一道关于node.js沙箱逃逸的问题
大致说一下 题目的描述,首先定义变量flag,然后我们可以在沙箱里面执行任意的命令,那我们如何逃逸出去呢?

在较早一点的 node 版本中 (8.0 之前),当 Buffer 的构造函数传入数字时, 会得到与数字长度一致的一个 Buffer,并且这个 Buffer 是未清零的。8.0 之后的版本可以通过另一个函数 Buffer.allocUnsafe(size) 来获得未清空的内存。

这儿的环境是8.0之前的,所以我们使用Buffer()来读取内存,这个和Linux读内存原理差不多~~
由于第一个eval把flag读入了在内存中的全局变量,所以只要能通过沙箱里的eval去读取内存中的内容的话,就可以形成沙箱逃逸

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

这题甚至都没有用到什么原型链,直接用Buffer()函数用于读取内存的内容,可以通过这个函数直接去读取全局内存中的内容

由于内存的保护机制,并不是每一次都能读取到含有flag内容的代码的,多运行几次就好了, 作者:新津李老八 https://www.bilibili.com/read/cv12856002 出处:bilibili
exp:


————————————————
版权声明:本文为CSDN博主「HyyMbb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a3320315/article/details/104217972



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-18 14:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表