目录[TOC]
前言跟我一起参加入职培训的师傅找我一起做RealWorld 4th的Desperate Cat,看了writeup,在做题过程中学到了很多,在最后也是成功复现,记录一波。
关键词:
EL表达式
Tomcat Session存储
jsp编译过程
Tomcat reload条件
Desperate Cat背景在这篇推文RWCTF 4th Desperate Cat Writeup中,作者出了一道名为Desperate Cat的realworld CTF赛题,取材于现实攻防遇到的难点(不得不说,这样的题目才是真正的以赛代练)
下面是对该赛题的描述:
存在文件上传功能点
服...
tabby项目介绍项目地址
1https://github.com/wh1t3p1g/tabby
项目介绍
123TABBY是一款针对Java语言的静态代码分析工具。它使用静态分析框架 Soot 作为语义提取工具,将JAR/WAR/CLASS文件转化为代码属性图。 并使用 Neo4j 图数据库来存储生成的代码属性图CPG。
配置Neo图数据库
下载安装Neo Desktop
https://neo4j.com/download/?ref=get-started-dropdown-cta
新建project,设置密码为pas...
neo4j数据库安装从官网下载neo4j Desktop
https://neo4j.com/download/?ref=get-started-dropdown-cta
neo4j介绍简单查看
12:schema //查看表库:sysinfo //查看数据库信息
Neo4j的特点
SQL就像简单的查询语言Neo4j CQL
它遵循属性图数据模型
它通过使用Apache Lucence支持索引
它支持UNIQUE约束
它包含一个用于执行CQL命令的UI:Neo4j数据浏览器
它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
它采用原生图...
序列化与反序列化概念序列化:将对象转化为可存储的字符串
反序列化: 将字符串还原成对象
在PHP中用于序列化的函数为searilize,用于反序列化的函数为unserialize
serialize
serialize(mixed $value): string
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
unserialize
unserialize(string $str): mixed
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PH...
学免杀首先要了解代码特性,将各种trick(webshell相关)作用都发挥到极致,从而绕过所有waf,当然仅限于静态分析,动态的话使用aes加密即可。
本文将围绕php是个解释型语言的前提进行探索
代码执行优先级代码执行优先级简单来说就是执行代码的顺序
经过测试php是从上到下,从左到右进行解释执行
优先执行括号内的内容,但是不会因为括号越多越先执行
1234<?phpif(md5(md5(phpinfo()))===md5(exit())){ echo 1;}
因此这个例子的执行结果是phpinfo()
而这个例子是exit()
1234<...
webpack简介webpack是一个JavaScript应用程序的静态资源打包器(module bundler)。它会递归构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。大部分Vue应用会使用webpack进行打包,如果没有正确配置,就会导致Vue源码泄露,可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。
漏洞利用当看到js中包含sourceMappingURL时
访问URL即可得到js.map文件
解密使用nodejs的reverse-sourcemap
1npm instal...
本篇文章介绍一下中间件相关的利用面
常见的中间件有Jboss、Weblogic、Websphere、Tomcat、Apache、Nginx、IIS
Jboss
由于红蓝对抗中出现Jboss的概率较高,因此记录一下Jboss的利用面
JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。
Jboss未授权访问部署war默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密...
介绍部分摘自:javasec之JNDI
JNDI介绍JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。JNDI是Java EE的重要部分,需要注意的是它并不只是包含了DataSource(JDBC 数据源),JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA。
Naming Service 命名服务:
命名服务将名称和对象进行关联,提供通过名称找到对象的操作,例如:DNS系统将计算机名和IP地址进行关联、文件系统将文...
RMI概念RMI代表Remote Method Invocation,允许一个JVM中的对象access/invoke另一个JVM中的对象。
RMI用于构建分布式应用,提供Java项目之间的远程沟通,在包java.rmi中提供
RMI工作原理RMI架构RMI基于C/S架构,需要客户端及服务器端实现远程调用。
在服务器程序内部,创建一个远程对象,并为客户端提供该对象的引用(使用注册表)。
客户端请求远程服务器对象并尝试调用其方法
Transport Layer:连接客户端和服务器端。
Stub:客户端的远程对象的代理(Proxy),对客户端来说充当通路的角色。
Skeleton:客...
Shiro概述Apache Shiro™是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。借助 Shiro 易于理解的 API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。
官网:https://shiro.apache.org/
github地址:https://github.com/apache/shiro/
Shiro1.2.4反序列化漏洞(Shiro-550)漏洞描述在 Apache Shiro<=1.2.4 版本中 AES 加密时采用的 key 是硬编码在代码中的,这就为伪造 cookie ...