- 博客(86)
- 问答 (1)
- 收藏
- 关注
原创 2023安洵杯 ezjava
主要就是这两个依赖,有一个CB,和一个postgresqlpostgresql可以看到有几个cve最熟悉的就是cve202221724这个了发现目标不出网,所以只能利用写文件的那个,刚好有一个ftl模板注入可以利用接下来就是CB了,CB可以触发任意的getter,链子如下:而且java的版本是。
2024-03-18 08:58:00 895
原创 Tomcat内存马
描述Servlet3.0后允许动态注册组件这一技术的实现有赖于官方对Servlet3.0的升级,Servlet在3.0版本之后能够支持动态注册组件。而Tomcat直到7.x才支持Servlet3.0,因此通过动态添加恶意组件注入内存马的方式适合Tomcat7.x及以上。为了便于调试Tomcat,我们先在父项目的pom文件中引入Tomcat依赖关键在于 JSP->可识别类(恶意类)
2024-03-17 09:05:44 915
原创 红日靶场 4
我这里的思路就是通过 certutil 命令下载木马到域控,再通过一层端口转发到我们的 kali,把木马流量转发到我们的 kali 即可上线成功。所以我们就写计划任务了,这里好像是远程机器的 ssh 开启 Public 那个选项,可以写公钥,这里还是利用计划任务演示吧。其实这里可以直接放到 ubuntu 的 web 目录下直接让 dc 访问也可以,当时做的时候传 HFS 方便点。这里是可以执行 phpinfo 的,但是无法执行 system 或者其他 getshell 语句,挺奇怪的。
2024-01-07 17:24:16 1405 2
原创 vulnhub7
这次的靶机风格比较偏向 OSCP 风格,区别于传统的 CTF 类型的靶机,只需要提权到 root 即可,而且这次打靶确实触碰到很多知识盲区了提示:本地不需要任何暴力破解的地方,而且每个点都会有响应的提示。
2023-12-17 10:48:59 180
原创 vulnhub6
所以下一步就是需要爆破设置的密钥是配置了什么密码,利用 kali 自带的 john 工具。扫出一个 evil.php,像是后门文件,没有回显,需要爆破参数。1.读取 root 的,直接抵达目的(大多情况下权限不够)发现允许公钥和密码登入,发现只有第二种方法是行得通的。只有一个 80 是可利用的,所以就直接访问扫目录了。2.直接读取用户的配置文件,一般下权限都是足够的。,系统会问你是否安装,输入 y 即可自动安装。可以先记录,万一是后面需要用到的用户名或者密码。三个可能可以利用的,但是没有一个打的通的。
2023-11-24 08:13:59 481
原创 vulnhub4
靶机地址: https://download.vulnhub.com/admx/AdmX_new.7zfscan 扫一下全端口再扫一下只开放了一个 80 端口,所以肯定是有 web 服务,访问 http://192.168.120.138 是一个默认的 apache2 页面扫一下他的目录,肯定是有东西的,如果目录没有东西,就找他的域名发现一个 wordpress 服务但是加载资源非常卡看他 F12 的页面733 x 5101393 x 969发现他写死访问的资源再 html 了用
2023-11-24 08:11:46 413
原创 vulnhub5
表示将前一个命令的标准输出(在这种情况下是 "payload" 字符串)重定向到 ./add_record 程序的标准输入,这样 ./add_record 将从标准输入读取 "payload" 字符串。下一步工作就是测试哪个位置可以覆盖 EIP,因为我们输入的 1000 个 A 中不知道具体是哪几个站住了 EIP 的地址。是一个用户登录注册的地方,因为这里没有 admin 的邮箱地址,所以我们只能尝试使用注册来看看登录后的系统是否存在漏洞。这里发现可以覆盖掉栈的地址,说明我们这里是可能存在漏洞的。
2023-11-21 09:24:16 182
原创 vulhub打靶第三周
靶机下载地址:https://www.vulnhub.com/entry/chronos-1,735/环境折磨导致做晚了,再加上期末的考试多耽搁下来了,然后就是辗转反侧打比赛,拖了这么久,时隔三个月重新开打因为陆陆续续打了两次,所以环境可能变化了,IP不同见谅。
2023-09-23 22:08:44 239 2
原创 2023陇剑杯
首先判断哪个是服务器地址从响应包看,给客户端返回数据包的就是服务器所以确定服务器地址是再从开放端口来看,长期开放的端口所以就是80、888、8888。
2023-09-18 16:09:52 1315 3
原创 vulhub打靶第二周
因此,命令在执行时可能会按照预期将参数作为一个整体进行处理,并执行其中的多个命令。这里使用了system执行命令,而且需要一个参数,只会把第一个参数作为命令来执行。用hydra爆破一下,先创建两个文件,一个。
2023-06-11 20:48:03 652
原创 HTB MonitorsTwo
fscan下面这个ssh爆破就不要让他试了,这个不太可能而且太没有含金量了。跑出来密码是funkymonkey,80登陆不了试一下ssh。成功提权,但是没有发现flag.txt之类的。这个反弹shell的ip要是本地的10地址。ssh登陆后在用户目录拿到第一个flag。弱口令和sql注入无效,寻找nday。然后按照他的提示就提权了,太友善了。但是这题好像没有python环境。这里也没有sudo -l的提权。
2023-05-30 20:59:06 901
原创 HTB PC
链接:https://qing3feng.github.io/2023/05/29/HTB%20PC/今天又学一招,配置好/etc/hosts文件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHXRNj1I-1685406194714)(https://qing3feng.github.io/Blogimages/HTB_PC/image-20230529093245-pwj2tjw.png)]如图所示,这样子就可以直接ping pc了,不用再。
2023-05-30 08:30:43 1663
原创 JNDI注入
Java命名目录接口(Java Naming and Directory Interface),作用是为JAVA应用程序提供命名和目录访问服务的API(application programming interface)。* 轻量级目录访问协议 (LDAP)* 通用对象请求代理体系结构 (CORBA) 通用对象服务 (COS) 名称服务* Java 远程方法调用 (RMI) 注册表* 域名服务 (DNS)前三种都是支持一种字符串就绑定一种对象注:这里JDNI注入就可以用到我们之前的RMI的知识了。
2023-04-20 21:55:01 907 1
原创 长城杯Web
看到第一时间想到反序列化但是没有类似于的反序列化函数注意到函数is_dir(),这个函数可以触发phar协议,这个phar协议可以触发反序列化但是phar需要有文件上传的点:于是找到了这个功能点
2023-03-26 18:01:19 545
原创 Java安全--CC7
在学CC7的时候我有这么几个疑问1.为什么要两个LazyMap2.hashCode那一步怎么计算的3.为什么要remove yy4.为什么put两个我们可以先看一下CC7的链子是怎么走的:其实分析链子还是从命令执行走到readObject比较好理解,虽然比较麻烦,比较繁琐,但还是这样子分析提升比较大,主要是知道自己在写啥,知道某个地方我们需要传入什么,不用抄一份payload去调试。
2022-12-21 20:55:55 1119
原创 Java安全--CC2
我们要思考一下如何在InvokerTransformer newTransformer = new InvokerTransformer("newTransformer", new Class[]{}, new Object[]{});,在CC4中我们知道要传入至少两个对象。那我们这里是传入第一个对象还是第二个对象。既然可以两个都传,那我们能否第一个对象传入任意值,第二个对象再传入。在这之后便会像我们上面分析的一样,最终弹出计算器。其实就是之前都学过的几个类。
2022-12-19 02:28:08 584
原创 Java安全--CC4
而且最关键的是这里它还执行了break方法,所以下面的serialize是压根没有执行,所以连ser.bin的序列化文件都没有生成,怎么反序列化呢?接着在反序列化之前,add函数之后利用反射修改其值改回chainedTransformer,这样在反序列化的时候就可以执行了。为什么我们CC3前面半条不能用这个链子,或者有CC3不就足够了,为什么要再找一个这样的链子,不是画蛇添足吗?我们发现这个判断的时候就被阻隔了,size就是值队列内的数量,因为我们没有添加过任何元素所以这里默认就是0。
2022-12-16 21:05:42 734
原创 Java安全--CC3
如图所示的defineClass在寻找用法时有一个com.sun.org.apache.xalan.internal.xsltc.trax包下面调用了这个重载方法,并且类型的default。这里判断完byte之后对_tfactory进行了方法的调用,所以这里需要对_tfactory进行赋值,否则这里会报空指针报错。是一个transient类型,值为空的东西。发现报错了,还是报了空指针的错误。我们调试发现报错的点在_auxClasses调用put这里,因为_auxClasses为空,所以报了空指针错误。
2022-12-11 19:46:19 1066 1
原创 Java安全--CC1的补充和CC6
我们看一下两条链子的分歧在哪里:从ChainedTransformer.transform()开始往下和上一次讲的链子是一样的,这里就不赘述了。不一样的是transformer调用的函数从TransformedMap.checkSetValue()变成了LazyMap.get()我们现在的目标是搜索那里调用了get方法-->也是AnnotationInvocationHandler需要利用的点在AnnotationInvocationHandler的invoke()里面,而学完动态代理我们知道Invocat
2022-12-08 12:38:25 1227
原创 Java安全--篇四-Java原生反序列化
看理论:序列化和反序列化的详解_tree_ifconfig的博客-CSDN博客_序列化和反序列化java序列化与反序列化全讲解_mocas_wang的博客-CSDN博客_java反序列化java 序列化和反序列化 - xbwang520 - 博客园序列化和反序列化的简单图解:我们编写三个类实现一下序列化和反序列化这里需要注意的是Person需要实现Serializable接口,以此来标识该类可以序列化和反序列化。因为这个接口里面什么都没有,因此称作反序列化标记运行serializeTest
2022-12-05 11:41:36 1090
原创 Java安全--篇三-动态代理
这个可以算是反射之后的下一步学习的东西吧,涉及到到的基础我们通过一个案例问题来引出动态代理:我们现在需要满足网站的三个功能:并且我们需要统计每个功能的执行程序所用的时间。首先编写一个接口来模拟三个功能:然后编写一个实现类:再定义一个测试类:执行结果:以上就是典型的静态代理。如何解决这些问题呢?其实发现有冗余代码我们的目的肯定就是整合代码,使用类似函数的东西来实现重复代码的重合,就如下图所示:用伪代码实现起来就是这样:我们希望这里的function可以是我们想要执行的任意方法,其实这个
2022-12-05 11:38:15 620
原创 Java安全--篇2-类的动态加载
首先我们来了解一下构造代码块和静态代码块:Java中静态代码块、构造代码块、构造函数、普通代码块 - YSOcean - 博客园继上周我们重写了Person类:我们先写一个main来实例化Person看一下结果:看到这个结果我们可以观察到两个信息:接下来我们利用反射来尝试获取类看看会发生什么:发现只调用了静态代码块为什么?了解一下类是怎么加载到JVM中的:类加载过程,以及什么是双亲委派? - 掘金用图来说就是这样:只要初始化了就会执行静态代码块如果实例化那么与对象相关的实例化和构造方法也会被调用
2022-12-05 09:22:35 1098
原创 Java安全-CC1
这里用的是组长的链子和yso好像不太一样,不过大体上都是差不多的。后半条的链子都是一样的,而且这条更短更易理解。yso的CC1过段时间再看一下。![image.png](https://img-blog.csdnimg.cn/img_convert/64dc7781acc31f532718573001745501.png#averageHue=#2d2c2c&clientId=ud4bee143-b38b-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=66
2022-12-04 13:09:49 867
原创 URLDNS链
听说这个链子是最简单的链子之一了,但是却是来来回回看了好多遍才勉强看明白。在 ysoserial 中我们可以看见链子是这样的:简单流程:现在我们来编写类来观察如何触发DNS请求这个类可以进行序列化,按照正常来说序列化的过程是不会进行DNS请求的,但是我们查看DNSlog平台:发现序列化的时候就发起请求了,这样有几个非常不好的地方:下图是URL类中的hashCode()方法;这里只有当hashCode不为负一的时候才会走handler发起DNS请求hashCode在初始化的时候已经被赋值成-1了:但是我
2022-12-03 09:47:47 1238
原创 Java安全--篇1-反射
看了好多文章,一直没搞懂反射是什么,然后闲着无聊搜了视频,一看就懂了好多,这里浅说一下。很多顺序是跟着P神的文章走的,把自己看不懂的百度出来记录一下。
2022-11-13 09:01:33 859
原创 UUCTF WP
/利用mail函数触发恶意函数,跳转至__attribute__ ((__constructor__))修饰的函数。mail触发恶意函数跳转至__attribute__ ((__constructor__))修饰的函数。$md5[1]的话看时间戳就可以了,可以写python发包,也可以直接卡时间戳手动发包。问了xiaoqiuxx师傅,原来是匹配头和尾也没有0e,用换行可以绕过。putenv("LD_PRELOAD=")的形式可以加载恶意动态库。
2022-11-02 10:49:32 1534 4
原创 EasyLove
suid提权,蚁剑的shell看不到suid的数据。可以反弹shell,或者直接在页面1=system(" find / -perm -u=s -type f 2>/dev/null ");构造出来发送的信息是这样的:(复现的时候还傻傻的伪造POST数据,完全没搞懂原理才会这么做。原来是要告诉我们攻击redis,并且密码是20220311,当时做题完全不懂什么意思。// 这里wp好像是用伪协议读取,但是做题第一时间没想到,用了上面这个方法。这次也是date命令提权,上次是xiaoqiuxx师傅教我的。
2022-10-26 21:39:10 1276
原创 DASCTF X GFCTF 2022十月挑战赛-hade_waibo
这是一个非预期解,但是得到出题人的赞许,莫名开心,哈哈:cancan need处存在任意文件读取这种查文件+文件上传,多半就是考phar,但是这次没做出来主要卡在的过滤了本来的思路是上传一个文件1.jpg,内容如下:#!/bin/bashls /这个文件在/upload目录下面,只要命令是。
2022-10-26 21:32:07 910 2
原创 卷王杯 easy unserialize
因为一个没学过,所以没解出来。要输出flag,就要调用方法一眼看过去,魔术方法__get里面的都可控,可以利用。
2022-10-19 18:24:13 728
原创 浅谈Linux下的redis攻击
redis服务ip:192.168.65.163 (CentOs)redis服务ip:192.168.65.158 (Ubuntu)kali攻击机:192.168.65.158。
2022-10-17 21:52:41 5296 2
原创 UnserializeOne
_set() 用于将数据写入不可访问的属性 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值 // 不存在赋值。__set_state(),调用var_export()导出类时,此静态方法会被调用。__isset(),当对不可访问属性调用isset()或empty()时调用。__isset() 在不可访问的属性上调用isset()或empty()触发。__unset(),当对不可访问属性调用unset()时被调用。__invoke(),调用函数的方式调用一个对象时的回应方法。
2022-10-09 21:14:45 1306 2
原创 [2021 蓝帽杯]杰克与肉丝
我没做出来的原因是没有从后往前赋值,要先对序号后面的值进行赋值,再引用前面的类。否则会返回赋值为空的报错。还有要注意的就是从后往前赋值。其他没什么了(我下面标出了序号)链子的过程比较简单 ,难点在绕过md5那里,以前没有接触过。如果同行的话,则md5值不相等。这里有个非常有意思的绕过md5和sh1的方法。原生类Exception绕过md5,sha1。
2022-10-06 15:53:25 977
原创 记一次靶机内网渗透
发现3389远程桌面连接端口是开放的,可是我们如果直接连接会发现是一个Windows2003的服务主机。那么有没有可能这个密码是相同的,因为都在同一个内网中,管理员可能是同一人。这样子就相当于10086端口在目标主机的服务器的内网中了,可以直接连接本地(直接连接内网地址)如果3389端口没有映射,除了拿下目标连接的路由器,还有一种方法:自己连接自己。这里的问题就是端口映射了,目标机的3389端口在公网的映射端口并不是3389。这里采用第三种方法。于此同时,我们需要一个代理软件来帮我们把py的数据给PHP。
2022-09-21 22:17:32 976
原创 DASCTF X CBCTF 2022九月挑战赛 Text Reverser
那就用脚本或者在线工具讲构造好的payload反序一下。被过滤了就用{%print%}的形式。Fuzz一波,看一下过滤情况。
2022-09-18 22:27:04 602 2
空空如也
为什么交换机和主机vlan地址不同却可以连接
2022-04-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人