首页
学习
活动
专区
工具
TVP
发布

从Spring内存马检测到隐形马

0x01 介绍 看了一些大佬的查杀内存马文章,很少有Spring相关内存马的检测方式 有部分是借助javaagent得到jvm中所有已加载的类然后分析,显得有点庞大 是否可以只借助Spring框架本身做检测呢...从检测思路上得到了一种进阶的内存马:隐形马,也可以叫做劫持马 劫持正常的Controller改为内存马,表明上一切正常,通过检测手段无法发现 0x02 检测效果 笔者基于SpringMVC本身写了一些检测代码...正常情况下,项目中已经有一些正常的mapping记录 使用来自Landgrey师傅公布的Payload,也是广为流传的一种 基于内存 Webshell 的无文件攻击技术研究 public class...第一次跟入的时候没有注意Method method = getBridgedMethod();方法,一直在尝试修改method发现没用 难点二 第二处坑:修改方法成功后为什么报错?...Method targetMethod = Horse.class.getMethod("shell", String.class); 内存马逻辑 public String shell(String

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

ThreadLocal到底有没有内存泄漏?

源码剖析 3.1 类签名 先从头开始,也就是类签名: public class ThreadLocal { } 可见它就是一个普通的类,并没有实现任何接口、也无父类继承。...分析了这几个方法的源码之后,下面就来研究一下内存泄漏的问题。 4. 内存泄漏分析 首先说明一点,ThreadLocal 通常作为成员变量或静态变量来使用(也就是共享的),比如前面应用场景中的例子。...经过 GC 后 Entry 持有的 ThreadLocal 引用断开,Entry 的 key 为空,value 不为空,如图所示: 此时,如果没有任何 remove 或者 get 等清理 Entry...这样就产生了内存泄漏。 这种情况其实也很容易避免,使用完执行 remove 方法就行了。 5. 小结 本文分析了 ThreadLocal 的主要方法实现,并分析了它可能存在内存泄漏的场景。...ThreadLocal 使用不当可能会造成内存泄漏。避免内存泄漏的方法是在方法调用结束前执行 ThreadLocal 的 remove 方法。

1.1K10

服务器内存监测

而对于程序员而言,如何避免内存泄漏也是一门学问,倘若不加以控制,那么无论多大的内存都会有消耗殆尽的那天。...本文当然不是研究如何分析内存泄漏的产生原因与解决方案,而是在此之前的一步,通过简单的内存监测方式来预测内存泄漏的 潜在可能性 或者 偶发性 等。...我这边需要监测 系统内存 与 jvm堆内存 ,最终的结果会展示各个时间点的内存情况,所以需要一个时间类,表示每个切片的时间点。...timeMarkInterval是存储定时器id的,在销毁之前释放定时器;physicMemory和heapMemory获取图表div节点,用于echarts节点获取;systemInfo则会存储定时从服务器拉取到的数据...倘若jvm内存出现了溢出的情况也可以使用arthas将堆快照dump出来,结合jvisualvm来定位问题,这边暂且也没有遇到该问题,暂不做赘述。

11320

服务器内存监测

而对于程序员而言,如何避免内存泄漏也是一门学问,倘若不加以控制,那么无论多大的内存都会有消耗殆尽的那天。...本文当然不是研究如何分析内存泄漏的产生原因与解决方案,而是在此之前的一步,通过简单的内存监测方式来预测内存泄漏的 潜在可能性 或者 偶发性 等。...我这边需要监测 系统内存 与 jvm堆内存 ,最终的结果会展示各个时间点的内存情况,所以需要一个时间类,表示每个切片的时间点。...timeMarkInterval是存储定时器id的,在销毁之前释放定时器;physicMemory和heapMemory获取图表div节点,用于echarts节点获取;systemInfo则会存储定时从服务器拉取到的数据...倘若jvm内存出现了溢出的情况也可以使用arthas将堆快照dump出来,结合jvisualvm来定位问题,这边暂且也没有遇到该问题,暂不做赘述。

14640

linux服务器内存

早上到单位 发现服务器 mysql 服务器停了 然后起来了 查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大...就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了 image.png 然后 重启mysql 查询内存 image.png 在这说一下 怎么看linux的内存 举个例子...空闲的内存数: 232M shared 当前已经废弃不用,总是0 buffers Buffer 缓存内存数: 62M cached Page 缓存内存数:421M 关系:total(1002M) = used...记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候...,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦

31.8K10

没有服务器,也能做网站!?

一般来说,想让别人能看到你的网站,你要购买域名、买服务器、再人工把网页文件传上去,还要装个 Nginx 之类的 web 服务器软件、修改软件配置等等,整套流程还是比较复杂的。...下面鱼皮就简单给大家介绍 4 种,详细的手把手教程可以观看我录制的视频~ 视频地址:https://www.bilibili.com/video/BV1UZ4y197i1/ (点击文末阅读原文可直接跳转) 无服务器上线网站方法...这种方法的原理是:别人有能挂网站的服务器和上线工具,我们把网站文件交给他们管着就行了。...内网穿透 以上几种方式,并不是真的不需要用到服务器,只不过是把网站文件放到了别人的服务器上而已。 但最后这种方式比较特别,通过 内网穿透 技术打通网络,直接让别人访问自己电脑上的网页!

6K20

linux服务器内存——分析篇

早上到单位 发现服务器 mysql 服务器停了 然后起来了 查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大...就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了 image.png 然后 重启mysql 查询内存 image.png 在这说一下 怎么看linux的内存 举个例子...空闲的内存数: 232M shared 当前已经废弃不用,总是0 buffers Buffer 缓存内存数: 62M cached Page 缓存内存数:421M 关系:total(1002M) = used...记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候...,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦

23.8K10

看懂服务器 CPU 内存支持,学会计算内存带宽

在深入了解服务器 CPU 的型号、代际、片内与片间互联架构一文中我们了解了服务器 CPU 的内部架构。在其中我们看到有一个内存控制器。 关于CPU内存控制器中会有很多专技术细节。...而且不再像之前一样要求每个内存颗粒传输距离相等,工艺复杂度因寄存缓存器的引入而下降,使得容量也可以提高到 32 GB。主要用在服务器上。 下图是一个服务器RDIMM 32 GB 内存条。...这个服务器内存条不光正面有很多内存颗粒,连背面也有。可见服务器内存的颗粒数量比普通笔记本电脑、个人台式机的颗粒都要多很多。...即使内存出现了比特翻转,可能影响的只是一个像素值,没有太大的影响,也很难感觉出来。 在服务器应用中,处理的一般都是非常重要的计算,可能是一些推荐计算,也可能是一笔订单交易,对出错的容忍度是很低的。...而不带 ECC 的功能是没有多出来的这个颗粒的。 CPU 每个 channel 支持同时支持 72 位的读写,其中 64 位是数据,另外 8 位用于 ECC 校验。 由于有额外的硬件引入。

6510

没有lrzsz,怎么传文件到服务器

我们最常用的,应该是lrzsz工具,通过rz(上传)/sz(下载),对于平常的小文件传输实在是太方便了 如果要传输大的文件,我们通常会选择winscp工具,通过ssh隧道进行传输 那么除了以上这些方法,或在没有这些工具的条件下...下面介绍几个方法 python python中自带一个轻量级web服务器,在python2中是模块SimpleHTTPServer,在python3中合并到http.server中 ?...小技巧:通常从运营商购买的服务器的带宽,是只限制出带宽而入带宽一般会比出带宽限制高或者不限制,这个时候,如果我们上传文件慢的话,我们可以改用从服务器下载的方式,而且服务器一般出端口不限制 Nginx/...Apache 上面python的轻量web服务器,虽然很方便,但是很多时候,服务器都会设置防火墙、安全组等,不常用的端口通常不会开放,这个时候,就可以直接用web服务器了,常见的比如Nginx、Apache...、IIS、Tomcat等,都可以 我们指定,web访问,就是从服务器下载资源之后,渲染到浏览器的,通过MIME类型进行识别文件,加载渲染,所以,我们利用web服务器 将需要下载的文件放到web服务器指定的目录下

4K10

都是颗粒 为什么SSD有寿命、内存没有?

随着技术的发展,我们使用的存储器也各种各样,虽然都基于芯片颗粒,但表现截然不同,比如说读写次数限制,或者叫寿命,SSD固态硬盘就有限制,DRAM内存没有。...按照分布位置的不同,DRAM内存属于内部存储器,紧挨着CPU处理器,用来临时存放后者需要的运算数据,并与外部存储器进行交换,起到桥梁的作用。...DRAM内存的特点是读写速度快、延迟低,但属于易失性存储,也就是一旦断电,数据就会全部丢失。...DRAM内存颗粒利用晶体管加电容来保存数据,而且只是临时存储数据,并没有实质性的写入,不涉及对物理单元结构、属性的改变,所以可以无限次读写。 ?...但另一方面,SLC、MLC、TLC、QLC的存储密度越来越大,SSD容量也越来越大,写满的概率越来越低,所以整个SSD的实际寿命其实并没有大大缩短,一般应用无需过分担忧寿命问题。

1.3K40

服务器内存使用飙升的排查

这几天自己线上的乞丐服务器遇到一个问题,io会瞬间飙升到很高很高,造成内存使用飙升。但是实际上并发量并不大(网络连接数)。知道是哪个进程造成的,但是确实排查代码中没有是么地方会有这么大的读写。...也不知道对方到底发的什么数据导致这么大的内存占用。 之前也处理过类似的问题。麻烦之处在于很好的定位问题,重现实际的操作。没办法,只能针对socket服务特定的端口进行抓包。...服务器问题,无非就是资源不合理的使用,造成服务器内存,cpu,io,流量等相关资源出现非常不正常的波动,资源使用率飙升。对于服务器性能问题的排查,没有其他比较好的办法,只能是通过重现复盘去改进。...特别是如果服务器上跑的东西比较多,一个个的排查相当痛苦。 出现问题,首先看日志。如果是线上的,先想办法恢复服务再排查。 看看登录日志,访问日志是否有异常,确定是否有人扫机器。

22.2K20

没有Linux服务器,该如何学习Linux呢?

很多小伙伴学习Linux的时候,都要面临着Linux的环境的搭建,但是由于每个人的自身条件不同,通常会出现以下情况: 手头富裕的小伙伴可能拿出手机扫个码,买个阿里云/腾讯云的服务器,稍微配置下就开始实操了...; 自身电脑还可以,同时又比较节俭的小伙伴可能装个虚拟机,安装相应的Linux系统,马马虎虎的也能用起来; 电脑配置一般般,运行个虚拟机内存/CPU爆红,敲了几下Linux指令,电脑疯狂转动,等待时间大于练习时间...我隔着手机屏幕摸了摸他的头,告诉他,我有个不买服务器,不用虚拟机就能学习Linux的方法! 好了,吹牛皮完毕,其实很简单,不管你电脑如何,只要你能联网,就可以使用在线Linux。

4.3K00

什么是虚拟内存服务器虚拟内存怎么设置最好?

一、什么是虚拟内存?虚拟内存有什么用处?...操作系统中所运行所有的程序全部都是经过内存提交给CPU然后才执行的,不过若是执行的程序占用内存很多或很大,则会导致内存消耗殆尽为解决内在消耗殆尽的问题,Windows操作系统运用了虚拟内存技术,简单的说就是把一部分硬盘空间充当内存使用...,虽然硬盘在读写的速度上远远不及内存条的速度,但是可以有效的避免内存消耗殆尽而引起的系统崩溃的问题而往往在运行大型或者一些或者吃内存的软件程序的时候就有可能会出现虚拟内存不足的情况二、怎么设置服务器虚拟内存...:2048  这个2048是按照系统内存来写的,比如内存2G也就是2048MB的内存 ,虚拟内存最好是和系统内存大小是一样的,最大值建议是初始大小的1.5倍到2倍的样子6、设置好后确定,设置好后重启服务器就会生效了注意...:为了保证网站正常运行,服务器虚拟内存不要使用默认配置,需要设置一下,一般设置为2G-10G以上就是关于虚拟内存设置分享感谢您的阅读,服务器大本营助您成为更专业的服务器管理员!

15610

没有想过:malloc分配的内存空间地址连续吗

ID:技术让梦想更伟大 作者:李肖遥 提出问题 我们在写程序中经常会用到malloc函数进行动态内存分配,但是我们有没有想过,在C语言中,向操作系统请求malloc内存空间的地址是连续的吗???...其实这就是内存边界对齐的问题,使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的, 对用户而言,所有内存都是虚拟的,程序并不是直接运行在物理内存上,而是运行在虚拟内存上...,然后由虚拟内存转换到物理内存。...虚拟内存地址到物理内存地址进行转换时,因为有可能相邻的两个字节是在不同的物理分页上,所以不一定是连续的。...延伸一下 本篇主要是想抛砖引玉,大家可以在自己电脑测试一下,后期会细节讲到字节对齐原则及作用,malloc的原理和内存分配,内存分页等问题。

2.5K40

【玩转服务器】Linux服务器内存占用高排查方法

当Linux服务器内存占用高时,可以按照以下步骤进行排查: 查看内存使用情况 使用free命令可以查看系统的内存使用情况,包括总内存、已用内存、空闲内存等信息。...使用top或htop命令可以查看系统进程的内存占用情况,按照内存使用量排序,找出消耗较大的进程。...i memory /var/log/messages 内存泄漏检测 如果怀疑有内存泄漏,可使用valgrind进行内存泄漏检测。...# 对程序 nginx 进行 --leak-check=full 启用完全的内存泄漏检测 valgrind --leak-check=full nginx 查看共享内存 如果共享内存占用较多,需要进一步检查是哪个进程在使用共享内存...slab内存 查看不可回收的slab内存占用情况,如果这部分内存占用较高,可以使用slabtop命令查看是哪些slab占用大。

68531

没有监控过JVM内存的职场生涯,是不完美的

app.jar -Xms256m -Xmx512m 而正确的写法应该是如下: java -Xms256m -Xmx512m -jar app.jar 上面这种情况,通过该工具可以轻易的看出JVM参数项里面并没有指定的参数值...而我们在内存分析时最重要的其实就是“类”的数量。在了解了上述的基本操作之后,我们就用一个实例来模拟分析一下内存溢出的场景吧。...内存溢出分析 下面我们就来启动程序,启动VisualVM来进行内存溢出的分析。 当程序执行的过程中,我们会发现“堆”内存会出现一个快速增加的曲线。 这个过程中Metaspace也在随之增长。...也就是说已经触发了频繁的Full GC操作,而且内存没有被释放掉。在生产系统中,当你看到系统在频繁的进行Full GC操作,那是JVM在释放一个很恐怖的信号了。...当你看到堆中有类似的大量的对象存在,你应该意识到此处可能有内存泄露。也就是大量的对象被创建,而没有被“顺利”回收。我们这里没被回收的原因是对象被放在了静态变量里面了。

47930
领券