当前位置: 首页 > news >正文

如何做游戏试玩网站/微信引流主动被加软件

如何做游戏试玩网站,微信引流主动被加软件,苏州 网站建设,男女做爰免费网站目录前言:2、项目配置3、编写“java 反序列化漏洞”后端代码4、编写“java 反序列化漏洞”前端代码5、运行测试前言: 本篇文章在上一篇文章基础上,学习了解 java 反序列化漏洞的基础知识后,现在开始进行漏洞环境的代码实现。 2、…

目录

  • 前言:
  • 2、项目配置
  • 3、编写“java 反序列化漏洞”后端代码
  • 4、编写“java 反序列化漏洞”前端代码
  • 5、运行测试


前言:

本篇文章在上一篇文章基础上,学习了解 java 反序列化漏洞的基础知识后,现在开始进行漏洞环境的代码实现。


2、项目配置

编写 application.properties

spring.thymeleaf.prefix = classpath:/templates/

pom.xml 导入相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>java_Deserialization</artifactId><version>0.0.1-SNAPSHOT</version><name>java_Deserialization</name><description>java_Deserialization</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- springboot 热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><!-- 防止二进制文件被编译 --><nonFilteredFileExtensions><nonFilteredFileExtension>dat</nonFilteredFileExtension><nonFilteredFileExtension>swf</nonFilteredFileExtension><nonFilteredFileExtension>xml</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin></plugins></build></project>

3、编写“java 反序列化漏洞”后端代码

java 反序列化漏洞复现起来可能相较于 sql 注入更加难一些,代码量也会更多一点

首先就是想好构造一个什么样的漏洞环境,经过自己查找相关资料,考虑到自己的能力以及时间等问题,与小组成员讨论过后,决定采用代码审计,并且最终提交 flag 的方式来达到对 java 反序列化漏洞的训练的目的。

想要完成这个漏洞实验,得到 flag,要求用户首先可以看懂 java 序列化的代码,然后同时自己可以根据给出的序列化代码,编写出反序列化代码,进而得到 flag。

根据上述思路,编写的部分源码如下:

java_deser.java

package com.example.java_deserialization.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.Optional;@Controller
public class java_deser {@RequestMapping("/java_deser")public void java_derser_start(String flag){flag Flag = new flag("1234abc");//flagSystem.out.println("被序列化对象:"+Flag.toString());//将对象转换为二进制字节数组(序列化)Optional<byte[]> bytes = ByteArrayUtils.objectToBytes(Flag);System.out.println(bytes);byte[] ret = bytes.get();//序列化后的反序列化是新的对象String r1 = ByteArrayUtils.toHexString(ret);System.out.println("序列化后转换字节数组-16进制表示:"+r1);}
}

indexController.java

package com.example.java_deserialization.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class indexController {@RequestMapping(value={"/","/index.html"})public String index(){return "index";}@RequestMapping(value={"/java_deser_index"})public String index_java_deser(){return "java_deser";}
}

测试 java 序列化与反序列化、编码文件 test.java

package com.example.java_deserialization.controller;import java.io.*;
import java.util.Base64;public class test {/*** 字符串转换成为16进制(无需Unicode编码)* @param str* @return*/public static String str2HexStr(String str) {char[] chars = "0123456789ABCDEF".toCharArray();StringBuilder sb = new StringBuilder("");byte[] bs = str.getBytes();int bit;for (int i = 0; i < bs.length; i++) {bit = (bs[i] & 0x0f0) >> 4;sb.append(chars[bit]);bit = bs[i] & 0x0f;sb.append(chars[bit]);// sb.append(' ');}return sb.toString().trim();}/*** 16进制直接转换成为字符串(无需Unicode解码)* @param hexStr* @return*/public static String hexStr2Str(String hexStr) {String str = "0123456789ABCDEF";char[] hexs = hexStr.toCharArray();byte[] bytes = new byte[hexStr.length() / 2];int n;for (int i = 0; i < bytes.length; i++) {n = str.indexOf(hexs[2 * i]) * 16;n += str.indexOf(hexs[2 * i + 1]);bytes[i] = (byte) (n & 0xff);}return new String(bytes);//Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());}public static void main(String[] args) throws IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object_hex.txt"));//将对象序列化到文件sjava_DeserializationController person = new java_DeserializationController("flag{0123abcd}", 23);oos.writeObject(person);//读取文件FileInputStream fis = null;File file = new File("object_hex.txt");fis = new FileInputStream(file);byte[] b = new byte[(int)file.length()];while (fis.read(b) != -1) {}System.out.println(new String(b));String hexStr = test.str2HexStr(new String(b));System.out.println(hexStr);System.out.println(test.hexStr2Str(hexStr));//写入文件String data =test.hexStr2Str(hexStr);File file1 =new File("object_hex1.txt");//if file doesnt exists, then create itif(!file1.exists()){file1.createNewFile();}//true = append fileFileWriter fileWritter = new FileWriter(file1.getName(),true);fileWritter.write(data);fileWritter.close();}}

4、编写“java 反序列化漏洞”前端代码

index.html:用做主界面,点击跳转到 java 反序列化漏洞环境界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>java序列化与反序列化</title>
</head>
<body>
<input type="button" value="java反序列化"onclick="javascrtpt:window.location.href='http://localhost:8080/java_deser'" />
</body>
</html>

java_deser.html:java 反序列化漏洞界面,可以查看源码,提交 flag,查看答案。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>java反序列化</title>
</head>
<body><p>java反序列化漏洞(源码分析),部分序列化代码如下:
</p><input type="button" value="点击执行java序列化代码"onclick="javascrtpt:window.location.href='http://localhost:8080/java_deser'" /><p>序列化后转化为字符数组形式,16进制表示为:(你需要自己编写代码,把该序列化后的字符反序列化,即可得到flag)
</p><form action="http://localhost:8080/java_deser_test" method="get">输入flag: <input type="text" name="id" /><input type="submit" value="提交" />
</form><form action="http://localhost:8080/answer_code" method="get">(没做出来的话)输入序列化后的16进制形式,查看答案: <input type="text" name="id" /><input type="submit" value="查看" />
</form></body>
</html>

answe_code.java:答案查询代码

package com.example.java_deserialization.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;@Controller
public class answer_code {@RequestMapping("/answer_code")public void answer_mathod(@RequestParam(value = "id",required = false) String r1, Model model){byte[] r2 = ByteArrayUtils.toByteArray(r1);flag Flag1 = (flag) ByteArrayUtils.bytesToObject(r2).get();System.out.println("反序列化后对象:"+Flag1.toString());}
}

5、运行测试

启动项目

java 反序列化漏洞环境主界面

在这里插入图片描述

生成的十六进制编码格式

在这里插入图片描述

反序列化

在这里插入图片描述

可以看到成功反序列化,并得到 flag


http://www.jmfq.cn/news/4779415.html

相关文章:

  • 哪个网站可做密丸/东莞市网络营销公司
  • 南宁商城网站建设/营销咨询公司排名前十
  • 网站制作 客户刁难/厦门seo服务
  • 北京市保障性住建设投资中心网站首页/赣州网站建设
  • 制作一个门户网站需要多少钱/百度一下你知道主页官网
  • 柳州做网站那家好/友情链接分析
  • 网站建设的要求/营销推广app
  • 哪个平台建网站比较好/湖南企业seo优化推荐
  • 专业北京网站建设公司/宁波网络营销策划公司
  • 手机网站建设公司排名/cpu游戏优化加速软件
  • 通过域名访问网站/一元友情链接平台
  • 人气页游排行榜前十名/广州seo做得比较好的公司
  • 翻译网站怎么做/乔拓云网站建设
  • 外贸展示企业网站/短视频营销策略
  • 南京网站设计工作室/seo怎么才能优化好
  • 做电商的进货网站/如何优化标题关键词
  • 深圳做关键词优化平台/关键seo排名点击软件
  • 长春市住房和城乡建设局网站/电工培训技术学校
  • 网站建设包括哪些部分/网络营销外包收费
  • 合肥最新消息/seo技巧是什么
  • 河北网站建设口碑好/附近学电脑培训班
  • 网站风格设计怎么写/seo项目经理
  • 上海知名网站制作公司/口碑营销案例2021
  • 衡水做网站的公司/品牌营销策划机构
  • 百度竞价排名是什么意思/seo推广主要做什么的
  • 北京泵网站建设/网站推广优化技巧
  • 门户网站域名是什么/windows优化大师软件介绍
  • 做废钢推广网站/seo优化培训多少钱
  • 城乡建设部网站自助商品房/惠州百度seo排名
  • 富顺住房和城乡建设厅网站/线下推广都有什么方式