声明 文章首发于跳跳糖社区https://tttang.com/archive/1782/ 前言 之前所接触的大多是PHP 反序列化题型,最近遇见了一道Python pickle反序列化类型题,因此学习了一下其反序列化...Pickle 师傅们可自行先参考一下官方文档 https://docs.python.org/zh-cn/3/library/pickle.html 定义 模块 pickle 实现了对一个...Python 对象结构的二进制序列化和反序列化。...通俗易懂的说,就是pickle实现了基本数据的序列化和反序列化。...储存多个属性名: 属性值的字典)对第二个元素(对象实例)进行属性设置 b 栈上第一个元素出栈 无 s 将栈的第一个和第二个对象作为key-value对,添加或更新到栈的第三个对象(必须为列表或字典,列表以数字作为
range()函数 \>>> range(1,5) # 代表从1到5(不包含5) [1, 2, 3, 4] \>>> range(1,5,2) # 代表从1...
有人说,不要轻易加载未知来源的模型,否则存在反序列化攻击的风险,本文就对此言论进行测试分析。...Pickle反序列化漏洞 通常情况下,会用到Pickle来将一些变量/对象转换成字节串进行存储,此操作称为序列化。 读取pkl文件,还原其中的数据,此操作称为反序列化。...而在Python中,有一个天然的魔法方法__reduce__,它在进行反序列化中,会自动执行其下的内容,这就造成了一个可被用于攻击的漏洞。...具体的解释可参考官方文档:https://docs.python.org/3/library/pickle.html 下面看一个示例: import os import pickle class Test...PyTorch反序列化漏洞 Pytorch的模型保存和加载底层依然是用到了Pickle,因此同样存在反序列化的漏洞。
reduce 中的方式完成反序列化,会避免报错 这在反序列化漏洞中很重要 很重要 S 代表一个字符串 S'string'\n p 后面接一个数字,代表第n块堆栈 p0、p1 ....与 PHP 序列化相似,Python 序列化也是将对象转换成具有特定格式的字符串(py2)或字节流(py3),以便于传输与存储,比如 session 但是在反序列化时又与 PHP 反序列化又有所不同...: PHP 反序列化要求源代码中必须存在有问题的类,要求是被反序列化的对象中存在可控参数,具体可看这里 而 Python 反序列化不需要,其只要求被反序列化的字符可控即可造成 RCE,例如: # Python2..." # 将被反序列化的字符串 pickle.loads(s) # 反序列化后即可造成命令执行,因此网站对要被反序列化的字符串应该做严格限制 在 Python 中,一切皆对象,因此能使用 pickle...pass # 反序列化时会调用 __reduce__ 方法 由于 Python 反序列化时只需要被反序列化的字符串可控(而不需要源代码中存在有安全问题的类)便可造成 RCE 因此我们可以通过如下代码轻松构造
https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf 序列化与反序列化 Python...最终留在栈顶的值将被作为反序列化对象返回。 stack 由 Python 的 list 实现,被用来临时存储数据、参数以及对象。...return RestrictedUnpickler(io.BytesIO(s)).load() server 端将接收到的数据进行反序列,这里与常规的 pickle.loads 不同,采用的是 Python...PS:我的环境是 Python 3.7.4,反序列化时获取到的 builtins 是一个 dict,所以用了两次 get,视环境进行调整吧。...反序列化漏洞/ https://www.leavesongs.com/PENETRATION/code-breaking-2018-python-sandbox.html
概述 Python中有两个模块可以实现对象的序列化,pickle和cPickle,区别在于cPickle是用C语言实现的,pickle是用纯python语言实现的,用法类似,cPickle的读写效率高一些...poc.pickle中: 3) 执行此payload: 4) 模拟实现一个更为真实的web环境,取路径中的参数后使用cPickle.loads方法反序列化: 5) 将刚才生成的payload进行url编码...但是pickle不能序列化code对象,这里简单测试一下:将要执行的代码都写到一个函数里foo(),尝试反序列化代码对象: 问题解决:从python2.6起,包含了一个可以序列化code对象的模块Marshal...由于python可以在函数当中再导入模块和定义函数,故可以将自己要执行的代码都写到一个函数foo()里: 得到payload: http://127.0.0.1:8000/?...加载的数据列入白名单,可使用官方推荐的find_class方法,使用白名单限制反序列化引入的对象 https://docs.python.org/3.7/library/pickle.html#pickle-restrict
本文内容:Python 数字类型 更多内容请见 Python 变量 Python 表达式与运算符 Python bool类型与逻辑关系运算 ---- Python 数字类型 1.整型 int 2....浮点型 float 3.整型与浮点型的相互转换 ---- Python 中数字类型有4种,分别是整型int、浮点型float、复数型comlex、布尔型bool。...1.整型 int 在 Python 中,整型数用关键字int表示(即英文单词 integer 的简写),包括:正整数、零和负整数。整型数全部由数字构成,不包括小数部分。...中,浮点型用关键字float表示,是由整数、小数点和小数构成的数字。...通过内置的数字类型转换函数可以显式地在数字类型之间进行转换: int(x),将 x 转换为整数,x 可以是浮点数或字符串。 float(x),将 x 转换为浮点数,x 可以是整数或字符串。
今天的题目与自定义函数的定义以及使用有关,主要是传参问题,好多朋友都问我传参不知道传什么好,其实还是代码量不够,写得多了,报错多了,就知道写什么了 题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串
数字 解释器就像一个简单的计算器一样:你可以在里面输入一个表达式然后它会写出答案。...在这个手册的后半部分我们会看到更多的数字类型。 除法运算 (/) 永远返回浮点数类型。...这意味着当你把Python用作桌面计算器时,继续计算会相对简单,比如: >>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >...除了 int 和 float,Python也支持其他类型的数字,例如 Decimal 或者 Fraction。...Python 也内置对 复数 的支持,使用后缀 j 或者 J 就可以表示虚数部分(例如 3+5j )。
数字类型 数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。...Python 支持三种不同的数字类型,整数、浮点数和复数。 整数 通常被称为整型,数值为正或者负,不带小数点。...python 3的整型可以当做Long类型使用,所以python 3 没有python 2的Long类型。...表示数字的时候,有时我们还会用八进制或十六进制来表示: 十六进制用0x前缀和0-9,a-f表示,例如:0xff00 八进制用0o前缀和0-7表示,例如0o45 python的整数长度为16,32位,并且通常是连续分配内存空间的...数字类型转换 在某些特定的情况下,我们需要对数字的类型进行转换。python为我们提供了内置的数据类型转换函数。 int(x) 将x转换为一个整数。
长整型也可以使用小写”L”,但是还是建议您使用大写”L”,避免与数字”1”混淆。Python使用”L”来显示长整型。...Python abs() 函数 描述 abs() 函数返回数字的绝对值。 语法 以下是 abs() 方法的语法: abs( x ) 参数 x – 数值表达式。...函数 描述 ceil() 函数返回数字的上入整数。...返回值 返回数字的绝对值。 实例 #!...floor() 函数 描述 floor() 返回数字的下舍整数。
在python中,数据采用了对象的形式(无论是python内置对象还是使用python工具和像C语言自行创建的对象)。...Python数字类型工具: 整数和浮点数 复数 固定精度的十进制数 有理分数 集合 布尔类型 无穷的整数类型 各种数字内置函数和模块 python数字类型在程序中的显示方式之一是作为常量(还有一个是调用模块使用函数...>> 5.0//3 1.0 >>> 5//2.0,5//-2.0 (2.0, -3.0) 整数精度,在python3.0中整数可以使用无穷的长度,只要内存足够大。...,第二个数字是指定的数字的进制。 ...1、小数数字,是通过导入模块调用函数后创建的,使用小数数字有固定的精度浮点值。
Python Number 数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。...,varN]]]] 您可以通过使用del语句删除单个或多个对象,例如: del var del var_a, var_b Python 支持四种不同的数值类型: 整型(Int) - 通常被称为是整型或整数...052318172735L -32.54e100 3e+26J 0x69 -4721885298529L 70.2-E12 4.53e-7j 长整型也可以使用小写"L",但是还是建议您使用大写"L",避免与数字...Python使用"L"来显示长整型。 Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
一 简介 数字 提供了标量贮存和直接访问。他是不可改类型。也就是数字的值变化时是生成了 新的对象。 1 如何创建数字和赋值。(数字对象) a = 1 就这么简单。...2 如何更新数字 因为单独数字不能做为变量,改变他的值。“3+5” 实际上没有改变他的值 只是重新生成了一个数值对象,并得到引用他而已。python 与 其他不同。...三 浮点 就是小数点的数字 每个浮点型 占8个字节(64位) 四 复数 ?...操作符就不说了 五 关于数字的内建函数和工厂函数 1 标准的 前面说了: cmp() ,str() ,type() 2 互转的函数: int() , long(),float(), complex()...3 功能函数: #abs() 返回一个数字的绝对值 ,如果是复数就返回他的模。
分别用while循环和for循环来玩转猜数字游戏 1.对于限定猜数字次数 (1)while循环 number = 56 count = 0 while count < 3: guess_number
构造猜数字核心函数 import random def guess_core(guess_min,guess_max,guess_counrt): '''猜数字核心判断函数 :param...guess_min 范围的开始 :param guess_max 范围的结束 :param guess_counrt 猜数字的次数''' print('请猜出%d~%d之间的任意一个数字你有...构造用户外壳函数 def guess_number(): '''猜数字函数''' print('欢迎来到猜数字游戏') guess_min = number_judge(input...('输入开始数字:')) guess_max = number_judge(input('输入结束数字:')) guess_counrt = number_judge(input('输入猜取次数...调用执行 guess_number() python学习途径 本游戏参考书本 >
参考链接: Python数学库math | gamma()函数 数字类型转换 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将... 将对象 x 转换为字符串 string repr(x ) 将对象 x 转换为表达式字符串 eval(str )#用来计算在字符串中的有效Python...数学函数 函数说明abs(x)返回数字的绝对值,如abs(-10) 返回 10ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5cmp(x, y)如果 x < y 返回 -1...sqrt(x)返回数字x的平方根 python 随机函数 TablesArecol 3 isright-alignedchoice(seq)从序列的元素中随机挑选一个元素,比如random.choice...python三角函数 函数说明acos(x)返回x的反余弦弧度值。asin(x)返回x的反正弦弧度值。atan(x)返回x的反正切弧度值。
今天看到了一个题目,需要输入一个数字,表示成绩和他的成绩的级别: A: 90--100 B: 80--89 C: 70--79 D: 60--69 E: < 60 需求在上面大家都看到了...89之间,表示你的级别是B;输入的是70--79之间,表示你的级别是C;输入60--69之间,表示你的级别是D;输入小于60,表示你没有通过; 除了上面的判断之外,我们还需要判断输入的是字符还是数字类型...,本来还需要考虑整数和负数的问题,但是由于负数有(负号)-,输入-21之后,系统判断是字符,不是数字类型了,所以这里就不考虑负数了。 .../usr/bin/env python print "This script make you input your number \n" print "Then will show your level
目录 python学习之数字 1.python数值类型 2. 数字类型转换 3. 常用函数 3.1 数学函数 3.2 随机函数 python学习之数字 Python 数字数据类型用于存储数值。...1.python数值类型 1.1 Python 支持三种不同的数值类型: 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。...Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。...x 和 y 是数字表达式。 3....常用函数 3.1 数学函数 函数 描述 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0 ceil(x) 返回数字的上入整数
写Python文件“使用说明”: Python的文件当然要以.py为结尾。 Linux上编写python文件要声明编译器位置: 首行:#!...Python中定义变量不需要声明,但需要赋值才能生效。变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型,由此可见,Python是一种弱类型语言。...变量赋值: 方式一:a=1 方式二:a = b = c = 1 方式三:a,b,c = 1,2,3 Python中的数字 Python2中支持四种数字类型:int、float、long、complex...Python3中支持四种数字类型:int、float、bool、complex(复数) Python所能表示进制数: In [1]: var = 0b111 (二进制) In [2]: var Out...: abs(x)返回数字x的绝对值 cmp(x,y)如果Xy)-(x pow(x,y) 返回x的y次幂 sum(iterable) 求一个可迭代对象每个元素相加之和 divmod(x,y) 返回x
领取专属 10元无门槛券
手把手带您无忧上云