jdbc反序列化
使用环境
1 | <dependency> |
如下是简单使用,主要是利用DriverManager.getConnection进行连接
1 | package com.example.jdbc; |
主要是resultsetimpl.getobject有反序列化漏洞
接下来是找谁调用了getobject,找到了com.mysql.cj.jdbc.interceptors.populateMapWithSessionStatusValues方法
1 | private void populateMapWithSessionStatusValues(Map<String, String> toPopulate) { |
他会自动进行查询SHOW SESSION STATUS并返回结果调用 ResultSetUtil.resultSetToMap
1 | public static void resultSetToMap(Map mappedValues, ResultSet rs) throws SQLException { |
resultSetToMap就调用了getObject方法
此处columnIndex为2处才能走到反序列化的代码逻辑,为1则直接返回null