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...
XYCTF2025-wp
比赛是之前打的,但是一直没有复盘,暑假闲来无事故决定复盘一下,也是作为复习 WEBfate12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/usr/bin/env python3import flaskimport sqlite3import requestsimport stringimport jsonapp = flask.Flask(__name__)blacklist = string.ascii_lettersdef binary_to_string(binary_string): if len(binary_string) % 8 != 0: raise ValueError("Binary string length must be a multiple of 8"...
校赛题目推断
之前因为期末的原因没有去打,现在闲下来了突然想起来,但是现在已经不开放了,所以就进行一个通过题目名称猜测题目内容的活动,也是水一篇blog,顺便鉴定一下学长的成分( 下面是题目列表 1234567891011121314151617181920212223MiscHTTPS怎么也不安全 张静媛学姐的秘密文件 段涵涵学姐最爱的音乐 流量分析-1 流量分析-2 流量分析-3 流量分析-4 流量分析-5 流量分析-6 流量分析-7 流量分析-8CryptoBase141 RSA你太baby了 愤怒的笑笑Webbusy_search can_u_escape ez?upload2 ez_upload give!me!money! lottery签到重生版 pop之我又双叒叕重生了 u_know? 函数重生版 小猿口算签到重生版Reversemaze IDA Xor rere sw1f7's TEA sw1f7's XXTEAMobilease_androidOSINT杜浩学姐の朋友圈 杜浩学姐の旅行 MISC总体还是比较难猜,直接放弃 WEB还是这个稍稍好猜一点点,...
SQL预编译——预编译真的能完美防御SQL注入吗
SQL注入原理sql注入是指攻击者拼接恶意SQL语句到接受外部参数的动态SQL查询中,程序本身未对插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。拼接的SQL查询例如,通过在id变量后插入or 1=1这样的条件,来绕过身份验证,获得未授权数据的访问权。 1SELECT * FROM user WHERE id = -1 or 1=1 由于or 1=1 满足永真结果,sql语句会执行输出user中的全部内容。 那么这么危险的漏洞,有没有办法进行阻止呢 有的兄弟,有的 预编译就能解决大部分的SQL注入问题 什么是预编译(Prepared Statement)?预编译就是在执行 SQL 前,把 SQL 语句先告诉数据库服务器,编译好结构,然后再单独传参数进去执行! 它的全名叫: Prepared Statement(预处理语句 / 预编译语句) 正常写 SQL 是怎样的?我们先看看普通的拼接 SQL 是怎样的: 123username = input("请输入用户名:")sql = "SELECT * FROM u...