- 博客(24)
- 收藏
- 关注

原创 ctf刷题记录1(完结)
可以看出theme后面的是经过base64加密的,解码后为:/var/www/html/system/tmp/theme/default/a.zip 发现就是该文件的地址,猜测flag文件在根目录下,将/flag加密后的L2ZsYWc=拼接上去,得到http://node4.anna.nssctf.cn:28521/admin.php?(这道题搜不到)然后就是测试后台网站,御剑扫出了admin.php,进入后发现是一个登录界面,提示密码是五位数字,可以爆破一下,最后账号是admin,密码是12345。
2023-10-08 21:17:14
1190
1

原创 从cc链认识java反序列化
基于commons Collection apache组织发布的开源库,里面主要对集合的增强以及扩展类,被广泛使用。大致概括cc链,就是有反序列化入口,同时有cc库的情况下,如何进行rce或者文件读取。
2023-09-30 15:46:52
299
原创 FastJson反序列化
Fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
2024-04-06 12:33:39
1867
原创 ctf奇淫巧计
00在urldecode后就是0x00,一些函数诸如preg_match遇到0x00会直接停止。注意:get请求中url栏中会自动解码,post请求的话需要burp抓包然后手动改。
2024-04-02 22:54:35
766
原创 LD_PRELOAD劫持
想要重写函数,函数的名称、变量及变量类型、返回值及返回值类型都要与要替换的函数完全一致,可以通过报错来获得这些信息(此时ls.c中的strncmp函数的参数不匹配产生报错)可以查询linux命令调用了哪些动态链接库。
2024-04-02 19:36:56
193
1
原创 javaweb学习
WEB-INF下存放项目依赖的jar包、配置文件和字节码文件Servlet 是 Java 编写的服务器端程序,运行在支持 Java 的 Web 服务器上,用于处理客户端的请求并生成动态的响应。Servlet 主要用于构建 Web 应用程序,可以接收来自用户请求的输入数据,处理数据,然后生成响应返回给客户端。我们来看一下转换后的serverlet文件,位置可以通过下面方式找到。然后依次进入如下的目录,就能找到/**/static {if (!
2024-04-02 19:36:29
544
1
原创 JNDI注入
JNDI是java命名与目录接口(java Naming and Directory Interface),类似于一个字典,将一些服务与逻辑名称绑定。当使用JNDI,应用程序可以通过逻辑名称而不是物理位置来查找和访问各种资源,这有助于提高应用程序的可移植性和灵活性。JNDI 体系结构由 API 和服务提供者接口 (SPI) 组成。Java 应用程序使用 JNDI API 来访问各种命名和目录服务。SPI 允许透明地插入各种命名和目录服务,从而允许使用 JNDI API 的 Java 应用程序访问其服务。
2024-03-20 22:46:29
1749
1
原创 java反序列化RMI篇
RMI代表远程方法调用(Remote Method Invocation),是Java编程语言中用于实现远程通信的机制。它允许在不同Java虚拟机之间的对象之间进行通信和交互,使得可以在网络上的不同计算机上调用远程对象的方法,就好像是在本地调用一样。而在通信的过程中,就存在序列化和反序列化的过程,如果服务端添加了存在反序列化漏洞的依赖,就可以利用。
2024-02-24 00:47:54
1267
原创 java反序列化shiro篇
Shiro是一个基于Java的强大且易于使用的开源安全框架,用于身份验证、授权、加密和会话管理。Shiro的设计目标是为应用程序提供简单但强大的安全性解决方案,使开发人员能够轻松地集成各种安全功能到他们的应用程序中。身份验证(Authentication):验证用户的身份是Shiro最基本的功能之一。Shiro支持多种身份验证方式,包括用户名密码验证、基于角色的验证、基于权限的验证等。授权(Authorization):授权是确定哪些用户可以访问应用程序中的哪些资源的过程。
2024-02-18 00:42:11
874
原创 JDBC编程
刚用idea还不是很习惯,顺便记录一下方便的快捷键把ctrl+D : 复制一行ctrl+alt+t : 包围起来,包括if、while、try catch等等.var:自动补充对象的所属类 也可以用ctrl+alt+V.sout: 自动补充输出函数system.out.println()psvm: 主方法ctrl+o,获得该类和父类中的成员方法alt+Insert: 快速添加getter和setter方法多列编辑:按住alt然后选中需要编辑的列即可。
2024-02-05 12:51:28
982
1
原创 安洵杯部分wp
链子挺好找的据说在invoke中直接查看phpinfoI()也可以直接看到flag,应该是非预期,按部就班的话就是在Flag类中利用原生类来读取文件。浅浅讲一下Flag类中的实现方式在__invoke()方法中,使用了函数来遍历类实例自身(即$this)的属性和值。对每个属性和值($one代表属性名 $two代表属性值,例如假使Flag有$a=’b‘的属性,那么$one就是a,$two就是b),都会执行一个匿名函数,在匿名函数中很明显可以利用原生类。给个结合原生类列目录的poc。
2024-02-05 00:24:02
857
1
原创 SQL注入
其实sql注入算是我最早开始学的了,也是web安全的入门知识,但是一直没有系统的学习过mysql,对于一些poc也只能硬套,不是很懂意思,现在算是初步学习了一些mysql的操作,重新开始mysql学习之旅。
2023-12-06 18:15:34
1237
1
原创 ctf&提权
SUID(Set User ID)是一种特殊权限,当用户执行具有SUID位的可执行文件时,该文件将以文件所有者的身份而不是执行者的身份运行。这允许普通用户在执行特定程序时获取特权权限。
2023-11-25 21:58:37
1127
原创 反弹shell
j、 ( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的标准输入、标准输出、标准错误和任何其他打开的。我 们对 2>&1详细说明一下 :2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据通道,也就是说把 FD2 的 “目标计算机的恶意程序与攻击者的监听器建立了连接后,攻击者就可以在自己的计算机上执行命令,并将命令通过网络发送给目标计算机。
2023-11-22 11:40:45
89
原创 NewStarCtf 2023 week3&week4&week5 web部分题目复现
看到源码中给出提示,包含phpinfo.php文件,包含后显示了phpinfo,搜索flag发现结合文件包含和题目的提示,无疑就是利用pearcmd.php本地文件包含(LFI)。关于pearcmd.php的介绍和利用直接放链接了大概意思就是我们可以利用pear中的命令,命令的参数来自于我们的url栏,用+分隔,因此是可控的,但是前提是register_argc_argv需要开启,且需要包含/usr/local/lib/php/pearcmd.php.
2023-11-19 20:49:09
1792
原创 ssti模板注入
当使用len(obj)时,实际上调用的就是obj.__len__方法,其它同理。.__globals__['__builtins__']['eval']:查获取该类的全局变量,得到其中的builtins,取其中的eval函数(一个实现细节,大多数模块都将名称__builtins__作为其全局变量的一部分提供).__globals__['__builtins__']不能写成.__globals__.|attr('__builtins__'),如果想要获取索引,就需要使用__getitem__魔术方法。
2023-11-17 22:49:23
270
1
原创 js原型链污染
需要纠正的是,o2和o1对象的层级本身是没有__proto__属性的,只有__prototype__,我们平常通过.__proto__调用都是向上寻找到Object.prototype,调用其中的__proto__属性,因为__proto__属性通过Getter动态获取__proto__的值的,所以不同层级的对象调用Object.prototype中的__proto__属性得到的值是不同的。这是merge函数造成的原型链污染,类似的还有clone函数,本质是找到能够控制数组(对象)的“键名”的操作。
2023-11-13 16:45:38
326
原创 php://filter与ctf
这篇博客主要介绍的是php://filter在ctf中的常见利用,关于php:/filter的介绍可以去下面这篇博客,讲解的非常详细。
2023-10-11 09:44:17
788
原创 php伪随机漏洞----台州市赛一道web题
由上面内容可知,我们只需知道随机数种子,就能知道mt_rand(1,2)每次产生的到底是1还是2,那我们该如何知道随机数种子呢,uniqid也是产生随机数并且我们不能预测。了解变量覆盖的人都懂extract函数的实力。extract函数会把数组中的键值当作变量名,value当作变量的值,若变量名不存在,则创建这样的变量,若存在,则覆盖先前的值,因此可以执行变量覆盖。但是此种随机属于伪随机,如果种子不变,在第二次运行程序生成的随机数序列会与第一次相同,因此产生的随机数实际上是可以预测的。
2023-09-30 11:06:04
491
原创 javaSE学习
通俗的理解就是像人吃饭,中国人用筷子,欧美人用刀叉,印度人用手抓,吃饭的方式是不同的,难以有统一的定义,因此就是抽象的。只有声明没有实现的方法称为抽象方法不完整的类就是抽象类因为含有抽象方法的类不完整,所以一定是抽象类但是抽象类中不一定都是抽象方法抽象类无法直接构建对象,但可以通过子类间接构建对象如果抽象类中存在抽象方法,那么在子类中一定要重写抽象方法。abstract 返回值 方法名(参数) // 没有{}
2023-09-14 21:43:02
152
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人