文件解压之过(Zip Slip)漏洞导致 Python 代码执行
Python 中负责解压压缩文件的代码实现上并不安全,存在目录遍历漏洞,攻击者可以利用该漏洞覆盖**__init__.py**文件,实现任意代码执行。 在PHP中,实现代码执行最为简单的一种方式就是利用PHP中不安全的文件上传处理逻辑。如果你可以欺骗文件上传逻辑,上传任意PHP文件,那么你就可以执行任意PHP代码。 然而,如果我们面对的是使用Go、Node.js、Python、Ruby等编写的现代Web框架时,即使我们把.py或者.js文件成功上传到服务器上,通过URL请求这些文件通常并不会返回任何结果,即使我们可以通过URL来访问这些资源,也不会触发任何代码执行动作 但是我们可以通过构造压缩包实现代码执行,精心构造的压缩文件虽然看起来人畜无害,但如果负责解压此类文件的代码本身并不安全,那么这种文件就会带来安全风险。 首先我们来了解一下 Zip Slip 漏洞 ZIP 路径穿越漏洞许多应用会从用户上传的 ZIP 压缩包中解压文件。但 ZIP 文件内可以包含 伪造路径,如: 1../../../../tmp/evil.py 如果程序在解压时不验证路径安全性,就可能将这些文件 ...
BehinderV4魔改
“冰蝎”(Behinder)是一个动态二进制加密网站管理客户端,相比较于传统的老牌工具“菜刀”而言,对webshell的流量进行了相应的加密。”冰蝎”客户端基于JAVA,所以可以跨平台使用,随着版本的升级,兼容性也随之提升。主要功能为:基本信息、命令执行、虚拟终端、文件管理、Socks代理、反弹shell、数据库管理、自定义代码等,功能非常强大,是现如今必不可少的渗透测试工具之一 如今借助大模型,ai 对流量中木马特征的监测已经越来越准确,可冰蝎早已不再更新,木马上传上去之间就落地成盒,所以我们要对冰蝎马在原本的基础上进行改造 冰蝎特征冰蝎有两个强特征,分别是 和数据包一大堆加密 如果这个数据包可以用冰蝎的传输协议解密,那就实锤为冰蝎马 除此之外还有数个弱特征例如 connection:keep-alive ,固定的 ua 头等 所以我们的魔改需要解决两个问题: 绕过识别(魔改打乱指纹信息) 绕过查杀(新增加密算法) JAP 反编译打包构建https://www.decompiler.com/ 在这个网站在线反编译,然后下载下来(也可以用 jd-gui 工具反编译) 在 i...
Python多线程
首先我们要了解一点基础知识 线程与进程进程(Process)进程是操作系统中资源分配的最小单位,简单来说,一个进程就是一个正在运行的程序的实例,操作系统会为每个进程分配独立的内存空间、文件句柄、CPU 时间、网络端口等资源。不同的进程之间相互独立,一个进程崩了不会影响另一个进程 在 Python 中,一个multiprocessing.Process() 启动的任务就是一个新的子进程,它拥有独立的 Python 解释器和内存空间 线程(Thread)线程是进程中的执行单元,是操作系统中能进行调度的最小单位 一个进程可以有多个线程,多个线程共享同一个进程的内存和资源,每个线程只负责执行一部分任务。 在 Python 里,threading.Thread() 或 ThreadPoolExecutor() 启动的就是线程 Python 中的区别和限制Python 中有一个叫 GIL(全局解释器锁) 的机制,这个机制让同一时刻只能有一个线程在执行 Python 字节码,所以对于 CPU 密集型任务,多线程的效果并不大,但是对于 I/O 密集型任务(网络请求、文件操作等),多线...
Docker基础
docker 基础常见命令: 命令 说明 文档地址 docker pull 拉取镜像 docker pull docker push 推送镜像到DockerRegistry docker push docker images 查看本地镜像 docker images docker rmi 删除本地镜像 docker rmi docker run 创建并运行容器(不能重复创建) docker run docker stop 停止指定容器 docker stop docker start 启动指定容器 docker start docker restart 重新启动容器 docker restart docker rm 删除指定容器 docs.docker.com docker ps 查看容器 docker ps docker logs 查看容器运行日志 docker logs docker exec 进入容器 docker exec docker save 保存镜像到本地压缩文件 docker save docker ...
2025年江苏省第七届大学生网络安全知识技能大赛-wp
遗憾差一点点没进决赛, 还是少个二进制啊,可惜我们学校二进制断代了┭┮﹏┭┮ 比赛期间太仓促了,忘了截图,就这样纯文字吧签到密文:kaljviko8ohhh59;49:p单字符的xor,写个简单脚本计算: 12s = "kaljviko8ohhh59;49:p"print(''.join(chr(ord(c)^13) for c in s)) flag{dfb5beee846947} misc1流量包内搜索 flag 的 base64 编码的前面部分 http contains "Zmxh" 找到一段流量包,跟踪 http 流,里面有这么一段: 1ZmxhZ3thNjVlMjdhZmMyYTdmN2UyN2ZmYjZkMjM5Mzk1ODU3Zn0iPmZsYWcudHh0O2VjaG8gY2E0OTg1ZjBmOGE5O3B3ZDtlY2hvIDJmOWUwNDJlM2Y2MQ%3D%3D 解 base64 得到 flag flag{a65e27afc2a7f7e27ffb6d239395857f} web1刚开始没看...
base64解码小trick
N1CTF Junior 2025 2/2 中的,也是不出意料没做出来 python 的 base64 解码逻辑和命令行的 base64 命令是不一致的 Python 的base64.b64decode(..., validate=True)在遇到 padding(=)后还有额外的 base64 字符,会报错,而用默认解码base64.b64decode(...)时,只会解出等号前的那一部分 但是命令行中会将两段都成功解出并拼接 这是因为 Base64 的编码本质上是一系列 4 字符为一组的字符块,最后一组可能用 = 填充以满足块对齐,根据解析器类型的不同,解析方法也会有区别 **严格解析器(Python 的 ****validate=True**):一旦遇到合法的填充字符 =,就认为这是该 base64 段的结束;如果填充后仍有数据,会报错为“padding 之后有额外数据” 宽松/流式解析器(GNU **base64 -d** 等):通常会把整个输入当作可能包含多个 base64 段(或忽略某些格式约束),会尽量解出每一段能解的部分,因此出现“先解出第一...
NSSCTF 4th-wp
依旧是单军奋战这一块,而且下午睡到 5 点多才想起来还有这么个比赛,半个小时速通两道 WEB 题这一块 WEBez_signin这题就是典型的 MongoDB NoSQL 注入,突破口在源码里 POST /search 接受 JSON 时,title/author 如果是 dict 会被原样拼进查询,没有加 $eq 且不做净化,所以可以直接塞 $ne / $regex 等操作符来“放大查询”拿到库里全部书、然后做一轮搜索搜出 flagexp: 123456789101112131415161718192021222324252627282930313233343536373839404142import requests, re, jsonbase = "http://node8.anna.nssctf.cn:27612"def dump_all(): # 取全量(有标题的都来) r = requests.post(base + "/search", hea...
SQL to RCE
有一些陈旧、庞大的系统中,因为一些复杂的原因,往往仍在使用 sa 账户登入 SQL Server,而在有如此高权限的资料库账户权限下,我们可以轻易利用 xp_cmdshell 来执行系统指令,但是这是几乎不可能的,我们取得的数据库账户必然是低权限,但因为发现的 SQL 注入是堆叠注入,我们仍然可以对表进行 CRUD,运气好可以控制一些网站设定变数的话,甚至可以直接 RCE 就比如我们可以发现某些特殊的数据库: 123456Database: ASPState[2 tables]+---------------------------------------+| dbo.ASPStateTempApplications || dbo.ASPStateTempSessions |+---------------------------------------+ 这个数据库的存在用途是用来保存 ASP.NET 网站应用程式的 session。 在 ASP.NET 网站应用程式里,Session(会话数据,比如用户登录状态、购物车资料)...
Python Bottle SSTI
XYCTF 中碰到的 Bottle 框架,当时做题根本没想到通过审计框架代码找漏洞点,也是学到新东西了 Bottle 简介Bottle 是一个 Python 的轻量级 Web 框架,完全依赖标准库(除了 wsgi 的部分),体积非常小(一个 .py 文件就能运行),适合写小型 Web 应用、API 或原型系统。它的设计理念是 “单文件、零依赖”,所以部署非常方便。 主要特点 特点 说明 单文件 框架代码就是一个 bottle.py 文件,方便直接打包或拷贝 零依赖 除了 Python 标准库外不需要额外安装其它库 内置开发服务器 用 run() 就能启动 HTTP 服务 支持多模板引擎 默认内置 SimpleTemplate,也支持 Jinja2、Mako 等 路由简洁 使用装饰器 @route() 定义 URL 对应的处理函数 WSGI兼容 可以在任何 WSGI 服务器(如 gunicorn、uWSGI)上部署 内置常用工具 请求/响应处理、静态文件服务、Cookie、表单解析等 基本结构示例1234567from bottle...
LilCTF2025-wp
比赛这两天一直在驾校练车,没时间打比赛,所以没出几道,排名也是很拉,就不放截图了 CRYPTO密码没学过,全是ai ez_math12345678910111213141516171819202122from sage.all import *from Crypto.Util.number import *flag = b'LILCTF{test_flag}'[7:-1]lambda1 = bytes_to_long(flag[:len(flag)//2])lambda2 = bytes_to_long(flag[len(flag)//2:])p = getPrime(512)def mul(vector, c): return [vector[0]*c, vector[1]*c]v1 = [getPrime(128), getPrime(128)]v2 = [getPrime(128), getPrime(128)]A = matrix(GF(p), [v1, v2])B = matrix(GF(p), [mul(v1,lambda...








