草庐IT

PyYAML库

全部标签

Pyyaml-yaml.load反序列化漏洞

#CTF#CTF-漏洞使用前两天打网鼎杯的时候遇到的这题,在这个反序列化漏洞上,试了很多种方法都没有成功,非常遗憾,所以就简单记录一下yaml.load这个漏洞。介绍YAML是“YAMLAin’taMarkupLanguage”(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML的意思其实是:“YetAnotherMarkupLanguage”(仍是一种标记语言)。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式

python - PyYaml解析Yaml配置文件中的Environment变量

我需要阅读以下yaml格式的配置文件:version:1disable_existing_loggers:Falseformatters:precise:format:"%(name)-15s#%(levelname)-8s#%(asctime)s#[Line:%(lineno)-3d]:%(message)s"datefmt:"%Y-%m-%d%H:%M:%S"handlers:file:class:logging.handlers.RotatingFileHandlerfilename:/target/tracing.logencoding:utf-8maxBytes:107374

python - 如何使用 pyYAML 将 python 元组添加到 YAML 文件?

标题是不言自明的。当我将元组保存到YAML文件时,我得到如下所示的内容:ambient:!!python/tuple[0.3,0.3,0.3]当我尝试使用yaml.safe_load(file_object)加载它时,我不断收到错误消息:yaml.constructor.ConstructorError:couldnotdetermineaconstructorforthetag'tag:yaml.org,2002:python/tuple'需要做什么? 最佳答案 在pyyaml中,SafeLoader不包含python原生类型的加

python - 避免在 PyYAML 中引用

我将YAML与PyYAML结合使用。有没有办法在转储嵌套结构后避免*id002引用?为了可读性,我想在那里看到实际的(元组)值。在尝试制作一个迷你示例时,我注意到只有在我使用相同的id对象时才会发生这种情况:importyamlt=("b","c")x={(1,t):1,(2,t):2,}print(yaml.dump(x))所以我认为copy.copy()可以解决问题,但是对于元组它似乎不起作用:(我可以创建一个具有不同ID的新元组吗? 最佳答案 PyYAML转储程序使用ignore_aliases方法来防止原始类型以这种方式被“

python - 我可以在 yaml/pyyaml 中转储空白而不是 null 吗?

使用PyYAML,如果我读入一个字典中包含空白值的文件:test_str='''attrs:first:second:value2'''这为键first返回None:>>>data=yaml.load(test_str)>>>data{'attrs':{'second':'value2','first':None}}但是在写的时候,None值被替换成了null:>>>print(yaml.dump(data,default_flow_style=False))attrs:first:nullsecond:value2有没有办法格式化转储输出以打印空白标量而不是null?

python - 如何使用 PyYAML 创建日期时间对象

我希望能够使用datetime.datetime.now()PyYAML创建日期时间对象。调用一些函数很容易:>>>y="""#YAML...description:Something...ts:!!python/object/apply:time.time[]""">>>yaml.load(y){'description':'Something','ts':1289955567.940973}>>>但是,我似乎无法弄清楚如何获得datetime.now()。我已经尝试过使用各种pythonyamltags调用的排列组合.这些都失败了:tests=['dt:!!python/objec

python - PyYaml - 转储带有特殊字符(即重音符号)的 unicode

我正在处理yaml文件,这些文件必须是人类可读和可编辑的,但也可以通过Python代码进行编辑。我正在使用Python2.7.3该文件需要处理重音(主要是处理法语文本)。这是我的问题示例:importcodecsimportyamlfile=r'toto.txt'f=codecs.open(file,"w",encoding="utf-8")text=u'héhéhé,hûhûhû'textDict={"data":text}f.write('writeunicode:'+text+'\n')f.write('writedict:'+unicode(textDict)+'\n')f.w

python - 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

我正在解析一个约6500行的YAML文件,格式如下:foo1:bar1:blah:{name:"john",age:123}metadata:{whatever1:"whatever",whatever2:"whatever"}stuff:thing1:bluh1:{name:"Doe1",age:123}bluh2:{name:"Doe2",age:123}thing2:...thingN:foo2:...fooN:我只想用PyYAMLlibrary解析它(我认为在Python中没有更多的替代品:HowcanIparseaYAMLfileinPython)。只是为了测试,我编写了代码

python - PyYAML : Control ordering of items called by yaml. 加载()

我有一个yaml设置文件,它在数据库中创建了一些记录:setting1:name:[item,item]name1:textanothersetting2:name:[item,item]sub_setting:name:[item,item]当我使用setting3更新此文件并通过以下方式在数据库中重新生成记录时:importyamlfh=open('setting.txt','r')setting_list=yaml.load(fh)foriinsetting_list:add_to_db[i]重要的是,每次将它们添加到数据库时,它们的设置顺序(数据库中的ID号)保持相同...并且

python - pyyaml 的漂亮输出

我有一个python项目,我想在其中使用YAML(pyYaml3.11),特别是因为它“漂亮”并且用户可以在必要时轻松地在文本编辑器中进行编辑。不过,我的问题是,如果我将YAML引入python应用程序(因为我需要这样做)并编辑内容(因为我需要这样做),那么编写新文档通常不像我开始时那样漂亮。pyyaml文档非常糟糕——甚至没有记录转储函数的参数。我找到了http://dpinte.wordpress.com/2008/10/31/pyaml-dump-option/.但是,我仍然缺少我需要的信息。(我开始查看源代码,但它似乎不是最吸引人的。如果我在这里没有得到解决方案,那是我唯一的办