buuctf web wp 2
[buuctf] web区 write up 2[CSCCTF 2019 Qual]FlaskLight题解进入发现是一个搜索页面, 搜个 1 试试: 接下来尝试 {{7*'7'}}, 发现此处存在 Jinja2 SSTI 注入: 1{{''.__class__.__mro__[2].__subclasses__()}} 其中能看到 file 类是第 41 个, 读一个文件试试: 1{{''.__class__.__mro__[2].__subclasses__()[59]('/etc/passwd').read()}} 之后尝试调用自建函数, 结果返回 500, 改用 self.__init__ 起点, 依然失败, 推测过滤了 globals,...
buuctf web wp 1
[buuctf] web区 write up 1[GYCTF2020]FlaskApp题解启动靶机, 是一个对输入进行 base64 编码/解码 的小程序。 经过尝试发现解码界面会输出解码后的结果, 猜测此处存在 Flask SSTI 注入: 构造 payload, 发现存在关键词被过滤, 用拼接字符串的方式绕过: 123{{''.__class__.__base__.__subclasses__()[127].__init__.__globals__.__builtins__['__imp'+'ort__']('o'+'s')['po'+'pen']('l'+'s').read()}}# 也就是#...
bilibili write up
XCTF - bilibiliXCTF 之 bilibili 难度:9, 方向:Web 打开主页: 好像无从下手, 尝试了一下目录爆破 + 简单的 SSTI 和 sqli 尝试, 暂时没有突破口, 看一下网页源码: 打靶记录信息收集看来应该是要在网页的购物篮里找 lv6 这个商品..翻了几页没翻到, 二分法找了一下发现一共有 500 页, 4500 个商品, 考虑写个脚本。 先看一下商品页面的网页源码: 123456<div class="jumbotron commodity-info"><div class="grids_of_3"><a href="/info/3"><img src="/static/img/b.png?v=f333849d89831d610cf384756c1216e5" alt=""/><img class="lv"...
SUCTF 2019 easyweb write up
[SUCTF 2019] easyweb 题目来源: BUUCTF [SUCTF 2019] easyweb 题解拼凑字符串绕过正则表达式刚打开靶机就是 php 审计: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 <?phpfunction get_the_flag(){ // webadmin will remove your upload file every 20 min!!!! $userdir = "upload/tmp_".md5($_SERVER['REMOTE_ADDR']); if(!file_exists($userdir)){ mkdir($userdir); } if(!empty($_FILES["file"])){ $tmp_name =...
SSTI 1 - (Flask) 总结
SSTI 1 - (Flask) 总结 SSTI - 基于 Flask + Jinja2 的服务端模板注入SSTI 注入原理模板引擎的核心是动态执行开发者预设的”魔术方法“或函数,而攻击者正是利用这种动态性注入恶意代码。 数据结构下面从数据结构层面系统阐述类、对象、实例的关系,并以此为基础解析SSTI注入本质: 数据结构层面上, 类 (Class), 对象 (Object), 实例 (Instance) 的关系: (以 Python 为例) 1234567891011121314class User: # 类定义 (蓝图) def __init__(self, name): self.name = name # 实例属性 def greet(self): # 实例方法 return f"Hello, {self.name}"# 创建实例 user1 = User("Alice") # user1是User类的实例...
Linux IR - 应急响应排查
Linux IR - 应急响应排查最近遇到了一个 Linux 应急响应 (Linux Incident Response) 的突发事件, 记录一下遇到的问题, 踩到的坑, 系统的响应流程以及常用命令。 应急响应流程 (PDCERP)应急响应流程总的来说就是分为两部分, 未雨绸缪和亡羊补牢。 准备 (Preparation) 提前建立响应能力, 指定相关计划, 组建并培训 IR 团队, 准备相应的工具包等等。最典型的活动就是管理日志, 网络流量捕获。 检测 (Detection & Analysis) 发现并确认安全事件, 监控告警, 并进行初步分析。 遏制 (Containment) 隔离受感染系统,阻止攻击扩散。切断网络, 拔网线 (物理), 主机隔离, 杀掉进程等。 根除 (Eradication) 彻底清除攻击载体, 之后二次扫描比对等, 确保完全删除恶意文件。对 Linux 来说, 需要注意授权密钥对, crontab 等。 恢复 (Recovery) 问题解决后逐渐解决业务正常运行。 事后总结 (Post-Incident...
手撕脏牛漏洞 (Dirty-COW)
手撕 Dirty-cow最近项目手里的工作比较少, 正好可以整理一下之前学到的东西 本文尝试从竞态条件开始, 一步步深入, 最终完全理解著名的脏牛漏洞。 竞态条件漏洞先来复习一下什么是竞态条件漏洞, 这一点在操作系统课程中其实讲过多次: 竞态条件漏洞发生于多个进程并发执行并共享资源, 并且最终运行结果依赖于这几个进程的精确执行时序时。 典型例子: 银行转账问题举一个典型的例子, 假设张三的银行账户里有 1000 元存款, 现在要去一台 ATM 机取款, ATM 执行如下逻辑: 校验: 检查余额是否足够 1000 元, 如果不足, 则直接弹出; 取款: 如果余额足够, 则令扣除 1000 元余额, 并取出 1000 元现金; 显然没有问题, 张三能顺利把钱取走。 现在把 ATM 增加到两台: 张三在 ATM A 取款, 他的朋友李四在 ATM B 使用相同的账户取款: 如果张三和李四的其中一人先完成了取款操作, 则显然另一人的取款操作会失败, 因为此时 ATM...
pikachu 2 - RCE, 文件包含, 文件上传, 越权操作, 反序列化, 重定向
pikachu 2 - RCE, 文件包含, 文件上传, 越权操作, 反序列化, 重定向RCE (远程代码执行)RCE 是一种比 sqli 更危险的代码注入, 一般来说 RCE 的注入点直接在 bash 中。利用系统终端的连接符来实现额外的指令执行。 连接符参考地址:简书 Windows: |:只执行后面的语句。 ||:如果前面的语句执行失败,则执行后面的语句。 &:两条语句都执行,如果前面的语句为假则执行后面的语句,如果前面的语句为真则不执行后面的语句。 &&:如果前面的语句为假,则直接出错,也不再执行后面的语句;前面的语句为真则两条命令都执行,前面的语句只能为真。 Linux系统: ;:执行完前面的语句再执行后面的语句,当有一条命令执行失败时,不会影响其它语句的执行。 |(管道符):将前面的语句的执行结果作为输入,...
pikachu 1 - 暴力破解, XSS, CSRF
pikachu 1 - 暴力破解, XSS, CSRF用 Docker 搭建靶场1docker run -d -p 8765:80 8023/pikachu-expect:latest 点击安装数据库即可。 配置 Burpsuite打开 BP, 查看代理配置: 应用到火狐浏览器: 下载并应用证书: 针对 firefox 浏览器, 如果目标网站在本地 ( localhost ), 则浏览器是默认不进行代理的, 要解决这个问题, 需要打开 about:config 界面, 搜索 network.proxy.allow_hijacking_localhost 并改为 true: 这样就取消了 127.0.0.1 localhost 永不经过代理的问题。 暴力破解暴力破解, 顾名思义就是通过力大砖飞的方式来枚举可能的密码组合, 不过其中也有很多技巧。 验证码绕过(on server)首先观察一下网站, 输入错误的组合: 用户名:1,密码:1,验证码:1 , 提示密码错误, 并刷新网站。 接下来打开 BP , 拦一个包看看: 此时显示网页已经刷新了, 刚刚的验证码是...
docker 3 - 容器化&迁移
docker 3 - 容器化&迁移记录一下一个项目里踩的坑: 将已有 apache-tomcat 服务迁移到 docker 中。途中遇到了, “机器码”(不是简单的MAC地址, 而是由一套算出来的特征码)莫名其妙变化, 磁盘空间不足, 转换临时文件目录, docker 迁移等问题。 需求将一个已有的可正常运行的 apache-tomcat 中的服务部署到 docker 环境中。由于这个应用有基于机器码的授权码认证机制, 需要固定每次启动的参数 (ip,mac等)。 文件准备目录结构如下: 123456tomcat-docker/├── docker-compose.yml├── Dockerfile└── webapps/ # 挂载目录 ├── ROOT/ └── ROOT_BPMUpload/ Dockerfile编写一个简单的 Dockerfile: 123456789101112131415161718# 9.0.78FROM tomcat:9.0-jdk8-openjdkLABEL...