java JNI基础
java学习笔记依旧是参考:
1https://www.javasec.org/javase/JNI/
只不过版本有点老,会报一些错误,还是建议自己再修改代码
URLConnection在java中,Java抽象出来了一个URLConnection类,它用来表示应用程序以及与URL建立通信连接的所有类的超类,通过URL类中的openConnection方法获取到URLConnection的类对象。
URLConnection:是所有与 URL 建立通信的类的父类。具体的协议支持类(如 HTTP、FTP 等)会继承 URLConnection。
使用URL发起一个简单的请求:
123456789101112131415161718192021222324252627package org.example;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;publ ...
java JDBC 基础
java学习笔记JDBC 基础之前一直有简单的了解,今天依靠着文档希望可以系统深入的学习一下
其实内心觉得学的还是有点慢了,希望后面可以加快进度
依旧是参考
1https://www.javasec.org/javase/JDBC/
很详细很全面的一篇文章,可以学到很多东西
JDBC(Java Database Connectivity)是Java提供对数据库进行连接、操作的标准API。Java自身并不会去实现对数据库的连接、查询、更新等操作而是通过抽象出数据库操作的API接口(JDBC),不同的数据库提供商必须实现JDBC定义的接口从而也就实现了对数据库的一系列操作
JDBC ConnectionJava通过java.sql.DriverManager来管理所有数据库的驱动注册,所以如果想要建立数据库连接需要先在java.sql.DriverManager中注册对应的驱动类,然后调用getConnection方法才能连接上数据库。
JDBC定义了一个叫java.sql.Driver的接口类负责实现对数据库的连接,所有的数据库驱动包都必须实现这个接口才能够完成数据库的连接操作。java ...
java 本地命令执行
java 学习笔记依旧是参考了
1https://www.javasec.org/javase/CommandExecution/
协会很多人在推荐的文章
Java本地命令执行平时其实利用的已经很多了就不再赘述了,简单看了看就过掉了
Runtime命令执行在Java中我们通常会使用java.lang.Runtime类的exec方法来执行本地系统命令
跟着文档学习一下这个方法的调用链如下:
1234567java.lang.UNIXProcess.<init>(UNIXProcess.java:247)java.lang.ProcessImpl.start(ProcessImpl.java:134)java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)java.lang.Runtime.exec(Runtime.java:620)java.lang.Runtime.exec(Runtime.java:450)java.lang.Runtime.exec(Runtime.java:347)org.apache.jsp.r ...
java 文件安全
java学习笔记sun.misc.Unsafesun.misc.Unsafe是Java底层API(仅限Java内部使用,反射可调用)提供的一个神奇的Java类,Unsafe提供了非常底层的内存、CAS、线程调度、类、对象等操作。
参考
1https://zhuanlan.zhihu.com/p/348052930
1https://www.javasec.org/javase/Unsafe/
如何获取Unsafe对象在使用Unsafe之前,我们需要创建Unsafe对象的实例。这并不像Unsafe unsafe = new Unsafe()这么简单,因为Unsafe的构造器是私有的。它也有一个静态的getUnsafe()方法,但如果你直接调用Unsafe.getUnsafe(),你可能会得到SecurityException异常。只能从受信任的代码中使用这个方法。
sun.misc.Unsafe代码片段:
123456789101112131415161718192021222324252627import sun.reflect.CallerSensitive;import ...
java 反射机制学习
初学java安全 3.24一直对java安全处于一个简单了解但是一直迫切学习的阶段
希望可以写一篇博客来督促自己深入学习java安全的知识
java反射java反射机制是指在java代码执行过程中,对于任意一个类,可以获取这个类的属性与方法;对于任意一个对象,可以获取、修改这个对象的属性值,调用对象的方法。这种动态获取信息和调用方法的技术就是java中的反射机制。
class对象参考了
12https://zhuanlan.zhihu.com/p/456898438
class类是一个类,而class对象是它的对象.
用文章中的一张图片来理解
class类用来描述类的元数据,每个类都有一个与之关联的class对象,这些在面向对象中都有涉及
每个类都有且仅有一个class对象。通过类和对象都能获取到类的class对象,获取到class对象有下面三种方式。
1.Student.class //通过类名.class的方式获取class对象
2.stu1.getClass() //通过类对象.getClass()的方式获取class对象
3.Class ...
春秋云镜 Certify
春秋云境 Certify域渗透·学习再碰春秋云境已经过去好几个月了,偷偷吐槽一下感觉真心有点贵(
外网打点首先用fscan对靶机进行扫描,发现8983端口有solr服务,打开网址查看打开之后发现网站启用了log4j2,可能存在JNDI注入漏洞,CVE-2021-44228。
漏洞的主要原理是log4j开放了lookup功能
1Log4j2的Lookup主要功能是通过引用一些变量,往日志中添加动态的值。这些变量可以是外部环境变量,也可以是MDC中的变量,还可以是日志上下文数据等。
而lookup功能是可以支持jndi的
12JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。JNDI注入主要是用过下载远程class,来运行恶意代码。JNDI注入攻击时常用的就是通过RMI和 ...
春秋云镜 initial
春秋云镜 initial记录第一次渗透第一次渗透感觉收获还是很多的
之前一直敬而远之,上手之后发现也没有想象中的难,但是在很多工具利用的过程中出现了非常非常多意想不到的问题,配软件的能力的得到了提升说是(。
外网打点打开网址是thinkphp框架,先用工具开扫
https://github.com/bewhale/thinkphp_gui_tools
这时候我遇上了第一个问题,这也是我经验不足的体现,这是官方给的执行命令java -Dfile.encoding="UTF-8" --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules "javafx.controls,javafx.fxml,javafx.web" -jar "xxx.jar"这时候可以看到我们是需要额外下载一个javafx-sdk的,但是我直接下载了上面的11.0.2的版本,出现了不兼容问题,后面查阅资料我又下载了匹配本地jdk版本的sdk。
这时候还 ...
CISCN
CISCNWEB主要写的是新学到的两个知识点涉及到的两个题,分别是Python原型链污染,以及python栈帧沙箱逃逸。
sanic/src扫描下载源码。
1234567891011121314151617181920212223242526272829303132333435363738from sanic import Sanicfrom sanic.response import text, htmlfrom sanic_session import Sessionimport pydash# pydash==5.1.2class Pollute: def __init__(self):passapp = Sanic(__name__)app.static("/static/", "./static/")Session(app)@app.route('/', methods=['GET', 'POST'])async def index(request): return ...
hgameweek4
week4webReverse and Escalation打开网站需要登录抓个包,感觉activemq有点眼生,查一下发现是一个CVE-2023-46606,默认admin和admin登录一下github上有专用的工具https://github.com/SaumyajeetDas/CVE-2023-46604-RCE-Reverse-Shell-Apache-ActiveMQ/按照步骤执行一下成功反弹shellcat /flag一下发现 Permission denied查找资料,原来是权限不够,涉及到提权的知识匹配一下可以用find命令提权find / -perm -g=s -type f 2>/dev/null find . -exec /bin/sh -p \; -quit 反弹一个有root权限的shell就可以啦
everse and Escalation.IIfind 命令会出现一个很奇怪的东西怀疑把find命令内部改过了,把文件base64复制下来,粘贴到010editor,用ida打开查看main函数观察函数,会以时间为种子生成伪随机数,需要我们一次性输入伪随 ...
hgameweek3
week3webwebvpn审计源代码,发现最后一段函数,要求我们从本地访问该网站,才能进行读文件操作
联想到SSRF但是怎么进行攻击?
接着审计代码,发现了典型能造成的原型链污染的函数update原型链污染的逻辑是
1原型链污染简单来说就是如果能够控制并修改一个对象的原型,就可以影响到所有和这个对象同一个原型的对象
而本网站的作用是构造一个VPN访问外网,联想到我们需要从本地访问,也就是说构造一个127.0.0.1的网站供我们访问同时注意函数禁用了__proto__因此我们采用constructor.prototype,而根据代码要求我们在user/info发送post请求同时调用req.body作为update函数的参数因此我们可以构造payload,考虑到访问ip地址默认80端口,而本地开放3000端口,因此访问的时候利用3000端口访问/flag就可以得到flag啦
ZeroLink网页是一个存储记忆的东西(?)可以查询记忆查看源码,发现以管理员身份登录后还可以上传文件等操作,因此我们先登录(登录界面也只能以管理员身份登录)但是远程的密码数据库中并不能查询到,通过询问 ...