周五的学习时间到啦!各位小伙伴,今天我们继续学习WEB安全渗透测试的基础知识第十三部分。
4.2
Python
4.2.1.格式化字符串
在Python中,有两种格式化字符串的方式,在Python2的较低版本中,格式化字符串的方式为"thisisa%s"%"test",之后增加了format的方式,语法为"thisisa{}".format(test)或者"thisisa{test}".format(test=test)
当格式化字符串由用户输入时,则可能会造成一些问题,下面是一个最简单的例子
classof{0}is{0.__class__}.format(42)
"classof42isclassint"
从上面这个简单的例子不难知道,当我们可以控制要format的字符串时,则可以使用__init__/__globals__等属性读取一些比较敏感的值,甚至任意执行代码。
4.2.2.反序列化
4.2.2.1.pickle
classA(object):
...a=1
...b=2
...def__reduce__(self):
...return(subprocess.Popen,((cmd.exe,),))
...
cPickle.dumps(A())
"csubprocess\nPopen\np1\n((Scmd.exe\np2\ntp3\ntp4\nRp5\n."
4.2.2.2.其他
●PyYAML
●marshal
●shelve
4.2.3.沙箱
4.2.3.1.常用函数
●eval/exec/