pickle反序列化
前置知识 pickle是==python中一个能够序列化和反序列化对象的模块==。和其他语言类似,python也提供了序列化和反序列化这一功能,其中一个实现模块就是pickle。 pickle实际上可以看作一种独立的语言,通过对opcode的编写可以对进行python代码执行、覆盖变量等操作 pickle模块的使用 demo 123456789101112131415161718import pickle class Person(): def __init__(self): self.age=18 self.name="Pickle"...
pyjali合集
前置知识 常见的方法 init:对象的初始化方法,在创建对象的时候调用 repr:返回对象的官方字符串表达式 str:返回对象的非正式或友好字符串表达式 len:返回对象长度 getitem:获取对象指定键的值 setitem:设置对象指定键的值 delitiem:删除对象指定键的值 iter:返回一个迭代器对象 contains:检查对象是否包含指定元素 call:实例对象作为函数调用时调用 base:返回当前类的基类 subclasses:查看当前子类的组成列表 builtins:以一个集合形式查看其作用 globals:返回所有全局变量的函数 locals:返回所有局部变量的函数 chr、ord:字符与ascll码转换函数 dir:查看对象属性和方法 基础payload: python导入模块的方法 import xxx from xxx import import(‘xxx’) eval、exec 123456789101112eval(expression[, globals[, locals]])exec(expression[, globals[,...
python中的原型链污染
简介 原理:python中的原型链污染是指通过对对象原型链中的属性,对程序的行为产生意外影响或者利用漏洞进行攻击 简介:在python中,对象的属性和方法可以通过原型链继承来获取。每个对象都有一个原型,原型上定义了对象可以访问的属性和方法。当对象访问属性或方法时,会先在自身进行查找,如果找不到就回去原型链上的上级对象中进行查找,原型链污染的攻击思路就是通过修改对象原型链中的属性,使得程序在访问属性或者方法时得到不符合预期的结果。 tip:原型链污染是无法直接进行rce的,而是通过污染一些关键函数的参数,导致命令执行或者污染一些魔术变量来进行任意文件或者目录的读取 常见的污染处: merge函数(可以通过控制src来对dst进行污染) 1234567891011121314151617181920212223242526272829def merge(src, dst): #src为原字典,dst为目标字典 # Recursive merge function for k, v in src.items(): if hasattr(dst,...
python中的ssti
前置知识 原理:服务器模板中拼接了恶意用户输入导致各种漏洞 flask的渲染方法: render_template():渲染一个指定文件 1return render_template('index.html') render_template_string:渲染一个字符串 12html = '<h1>This is index page</h1>'return render_template_string(html) 模板 flask使用jinja2作为渲染引擎 在网站的根目录下创建templates文件夹,这里用来存放html文件,也就是模板文件 test.py 1234from flask import Flask,url_for,redirect,render_template,render_template_string@app.route('/index/')def user_login(): return...
ssrf+crlf攻击
介绍webService三要素: wsdl:用来描述如何访问具体的接口 uddi:用来管理、分发、查询webservice soap:连接web服务或客户端和服务器之间的端口,使用http作为底层通讯协议,xml作为数据传送的格式 php中的SoapClient类 php的soap扩展可以用来提供和使用webservice,这个扩展实现了6哥类,其中soapclient类是用来创建soap数据报文,与wsdl接口进行交互的,同时这个类也有反序列化常用到的__call魔术方法 构造函数 123public SoapClient :: SoapClient (mixed $wsdl [,array $options...