Python_Summary
本篇 Blog 的内容更像是一页目录,主要记录在做题过程中所遇到的关于 Python
类型的题目
以及对此类型题目所以需要的知识点进行总结,分类,可点击 相关题目
中的链接以查看题目的具体解答过程.
这些Trick
在代码审计中帮助了我很多.
0x01 Flask SSTI
关于ssti的内容我单独写了一篇文章.
FLASK_SSTI0x02 Bypass
2.1 os.path.join
不恰当的使用os.path.join
可能会造成任意路经构造
# 假设 传入的 path1 可控
path = os.path.join('static',path1)
# 当构造的 path1 以 / 开头便可以实现任意路径构造
同样,你可以思考下面这个例子
Arbitrary file read due to insufficient validation of filename. The code is using the os.path.join function. An attacker can abuse this function to passing a file like this “/etc/passwd” absolute path.
According to docs “If a component is an absolute path, all previous components are thrown away and joining continues from the absolute path component.”
So, We can achieve an arbitrary file read and bypass the dot check “img=/etc/passwd”
2.2 SSRF
算是urllib
里面的一个trick, 之所以归在SSRF
是应为通常用来做SSRF
攻击.
0x03 Pickle 反序列化
3.1
3.2
0x04 Pyc 考点
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由Python的虚拟机来执行的,这个是类似于Java或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。
在 Python3
后,只要使用了 import
导入了包,就会在当前目录生成__pychache__
目录,里面就存放了pyc文件.
举例:
# python3.5 app.py
import secret
content_key = scret.KEY
那么运行 python3 app.py
后,会在当前目录生成 __pycahche__
目录:
__pychache__
secret.cpython-35.pyc