MICS:PythonJail沙箱逃逸(持续更新中)

news2024/9/27 15:26:04

        沙箱是一种防护机制,是用来运行不受信任的代码,通常是用户上传的代码,但这些代码可能是恶意代码,而沙箱就是防止恶意代码运行的机制。所谓沙箱逃逸,就是利用相关操作绕过沙箱防护,从而获得目标主机的文件信息内容等。

        某些沙箱上传代码的入口只能通过ncat或nc访问,ncat命令可以去下载,也可以通过下载Nmap自带。

        nc命令Windows下载地址:netcat 1.11 for Win32/Win64

        下载完成后,将nc.ext放到 C:\Windows\System32下便可以使用。

格式:

ncat ip地址/DNS 端口号

 例:

ncat 127.0.0.1 55375

1、系统命令执行

模块引入

        Python常见的执行系统命令的模块库有os、subprocess等,但这些模块需要引入才可以使用。以下是一些引入的方式:

#动态引入,system函数用以执行系统命令(sh是获取shell)
__import__('os').system('sh')
#文件读取引入,因为import的原理就是执行一遍导入的库
with open("d:\\anaconda\\lib\\os.py",'r') as f: exec(f.read());system('ls')

        第二种方法,需要获取模块的py文件路径,其可以通过help()函数获取。,输入要获取的模块名称,就可以在控制台查看到路径。

exec 和 eval 函数

exec可以执行多个Python 语句,而exal可以执行单个python语句或单个表达式。

eval('__import__("os").system("dir")')

exec('__import__("os").system("dir")')

 通过以上代码,可以执行系统代码,但有时候常常会被禁止。

2、字符匹配绕过

        对于字符串匹配绕过的处理方法有很多种,如chr函数、8进制绕过、拼接、16进制绕过、逆序等等。注意:chr函数返回值直接是字符串,不需要单引号。

import base64
print(chr(97))#输出a
# 将数字转换成ASCII字符
print("X19idWlsdGluc19f".decode('base64'))
# 3.x移除了
print('\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x73\x5f\x5f')
# 16进制绕过
print(u'\u005f\u005f\u0062\u0075\u0069\u006c\u0074\u0069\u006e\u0073\u005f\u005f')
# unicode字符绕过
print('__buil'+'tins__')
# 拼接
print('__builtins__'[::-1])
# 逆序
print('\137\137\142\165\151\154\164\151\156\163\137\137')
# 八进制

3、数字匹配绕过

        有时候数字被过滤禁止使用,可以通过ord()函数通过ASCII码转换成数字进行输出,达到想要的结果,同时也可以通过int(True/False)函数来获得0和1,还可以用len()函数通过获得字符串的长度来获得数字。

例:

print(ord('a'))
print(len('sssss'))
print(int(True)+int(True))

4、长度限制绕过

        对于Jail进行长度限制,应对的方法有eval(input())help()函数,breakpoint()函数等

eval(input()) 

        因为过滤的是源代码内部的input(),所以我们可以重开一个input(),这样就能绕过所以过滤规则。

案例:直接通过eval(input())获得shell。 

help()

        使用help函数需要输出的内容输出不完全,如果nc命令输出的内容是完全的则这个命令无法对长度进行绕过。类似于以下这种没有输出全部内容,可以通过!+ 命令执行Linux命令。

例如:通过以下输入方式输入。

breakpoint()

        pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。它还支持事后调试,可以在程序控制下调用。

        在输入 breakpoint() 后可以代开 Pdb 代码调试器,在其中就可以执行任意 python 代码

 

参考资料:

python沙箱逃逸总结_def check(code): for b in blacklist: if b in code:-CSDN博客

CTF Pyjail 沙箱逃逸绕过合集 - 先知社区 (aliyun.com)

Jail 【Python沙箱逃逸问题合集】 - Kicky_Mu - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM(HotSpot):堆空间(Heap)以及常用相关工具介绍

文章目录 内存结构图二、堆的定义三、堆内存溢出四、堆内存排查工具 内存结构图 二、堆的定义 1、通过new关键字创建的对象,都会放到堆空间中。 2、它是线程共享的,堆中的对象都要考虑线程安全问题。 那有同学肯定会问,方法内通过new创建的…

JavaScript --数字Number的常用方法

toFixed(保留几位小数) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

python编程开发“人机猜拳”游戏

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

UIAutomation:Python 自动获取 QQ 群成员资料

出于兴趣&#xff0c;想要获取 “QQ 群”成员资料&#xff0c;于是乎找到了一个自动化的 Python 仓库&#xff1a;Python-UIAutomation-for-Windows。 目录 1. 简介 1.1 实际环境 1.2 安装/源码 1.2.1 pip安装 1.2.2 源码 2. 代码 2.1 全部代码 2.2 class QQGroupMemb…

16. C++ TinyWebServer项目总结(16. 服务器调制、调试和测试)

主要包括&#xff1a; 使用 tcpdump 抓包&#xff1b;使用 gdb 调试器&#xff1b;使用压力测试工具&#xff0c;模拟现实世界中的高并发请求&#xff0c;测试服务器在高压状态下的稳定性。 最大文件描述符数 Linux 对应用进程能打开的最大文件描述符数量有两个层次的限制&a…

升压站成套设备厂家

那么&#xff0c;本文呢&#xff0c;就是将围绕着升压站设备厂家这个关键词&#xff0c;来为您、为潜在的光伏升压站成套设备的采购们分享 一些干货&#xff0c;以及说说升压站设备生成厂家的情况。 我知道&#xff0c;很多人关注的所谓的升压站设备或许比较的多。比如包括了逆…

Flutter路由

路由作为一种页面切换的能力&#xff0c;非常重要。Flutter 中路由管理有几个重要的点。 Navigator 1.0&#xff1a;Flutter 早期路由系统&#xff0c;侧重于移动端 &#xff0c;命令式编程风格&#xff0c;使用 Navigator.push() 和 Navigator.pop() 等方法来管理路由栈。 N…

序列化流(对象操作输出流)反序列化流(对象操作输入流)

可以把Java中的对象写到本地文件中 序列化流&#xff08;对象操作输出流&#xff09; 构造方法 成员方法 使用对象输出流将对象保存到文件会出现NotSerializableException异常 解决方案&#xff1a;需要让Javabean类实现Serializable接口 Student package myio;import java.…

Claude 的上下文检索功能提升了 RAG 准确率,这会是人工智能革命?

前言 在人工智能领域不断进步的过程中&#xff0c;人们对更准确且具备上下文理解能力的响应的追求&#xff0c;催生了诸多突破性创新。 而 Claude 的上下文检索技术就是其中一项进步&#xff0c;有望显著提升检索增强生成 (RAG) 系统的表现。 可能有同学就要问了&#xff1a;…

DDL 超时,应该如何解决 | OceanBase 用户问题集萃

问题背景 在OceanBase的社区问答里常看到有用户发帖提出DDL超时的问题&#xff0c; 如“执行 DDL 超时&#xff0c;为何调大超时时间不生效&#xff1f;” 。但很多帖子的回答都没有完美解决。因此&#xff0c;这里把相关的解决思路在这里分享给大家。 帖子里对这类问题的描述…

2、 如何提高电脑运行速度 (改虚拟内存)?

改下电脑C磁盘的虚拟内存 方法如下&#xff1a; ① 按下电脑键盘上的 win E 键 &#xff0c; 然后鼠标移动到左边的【此电脑上】 然后&#xff0c;按下鼠标右键&#xff0c;选择【属性】 ② 然后&#xff0c;选择【高级系统设置】 4、选择【高级】&#xff0c;选择性能里面…

SPSS26统计分析笔记——5 卡法检验

1 卡方检验原理 卡方检验由卡尔皮尔逊&#xff08;Karl Pearson&#xff09;于1900年首次提出&#xff0c;是一种针对频数数据&#xff08;定类数据或计数数据&#xff09;的假设检验方法。它通过比较实际观测次数与理论期望次数之间的差异&#xff0c;构造出 χ 2 {\chi^2} χ…

seL4 Threads(四)

官网链接: Threads Threads 这篇教程主要是使用seL4中的threads。 TCB Thread Control Blocks seL4提供了线程代表执行的上下文以及管理处理器时间。seL4中的线程是通过线程控制块对象&#xff08;TCB&#xff09;实现的&#xff0c;每个内核线程都有一个线程控制块。 线程…

linux服务器安装原生的php环境

在CentOS上安装原生的PHP环境相对简单。下面是一个详细的步骤指南&#xff0c;适用于CentOS 7及更高版本。 ### 第一步&#xff1a;更新系统 首先&#xff0c;确保你的系统是最新的&#xff1a; sudo yum update -y ### 第二步&#xff1a;安装EPEL和Remi仓库 1. **安装EP…

Windows内核编程基础(3)

内存分配 在应用层编程时&#xff0c;系统提供了GlobalAlloc/HeapAlloc/LocalAlloc等函数。C/C库提供了malloc函数&#xff0c;以及new操作符在堆上分配内存。 在我前面一个关于Windows页交换文件的博客中&#xff0c;介绍了虚拟内存&#xff0c; 虚拟内存是计算机系统内存管…

古月居全新改版上线:AI 大模型“古月知道”引领 ROS 学习新体验

前言 古月居自成立以来&#xff0c;一直致力于为广大 ROS&#xff08;机器人操作系统&#xff09;爱好者和开发者提供优质的学习资源和社区交流平台。经过长期的用户调研和反馈&#xff0c;我们发现旧版古月居在使用过程中存在一些不便之处。 为了更好地服务大家&#xff0c;…

如何生成谷歌临时邮箱?

谷歌的Gmail作为全球最受欢迎的邮件服务之一&#xff0c;不仅因其稳定性和强大的功能而备受青睐&#xff0c;还因为它支持临时邮箱功能&#xff0c;这一功能能够极大地提升用户在各种场景下的使用灵活性。无论是处理一次性事务、注册新账户还是防止垃圾邮件&#xff0c;Gmail的…

通义模型Prompt调优的实用技巧

1. 目录 1. prompt工程简介 2. Prompt设计 2.1 Prompt主要构成要素 2.2 Prompt编写策略 策略一&#xff1a;对较难被准确遵循的复杂规则可拆分为多条规则&#xff0c;有助于提升效果 策略二&#xff1a;适当冗余关键信息 策略三&#xff1a;使用分隔符给Prompt分段 策…

类与对象—python

一、类的含义 1.1类的作用&#xff08;理解&#xff09; 收集学生信息时&#xff0c;如果让同学们自主填写&#xff0c;信息的顺序、格式不一&#xff0c;内容混乱。如果发给同学们既定的表格&#xff0c;同学们按照规定的顺序、格式进行填写&#xff0c;那信息就会一目了然&…

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…