首先,我对Java知之甚少。我参与了夺旗活动,需要对一些Base64编码的cookie信息进行反序列化,以改变一些参数值,以便在挑战中取得进一步进展。
我已经回顾了很多关于此错误消息的其他问题,但我有限的Java知识(只为编写Java代码以回答此挑战问题)意味着我需要一些专业知识来帮助我快速理解。
我有以下代码来解码base64 cookie值,然后尝试反序列化。
import java.util.Base64;
import java.util.UUID;
import java.io.*;
public class decode {
public static void main(String args[]){
try {
// get the encoded string and print for reference
String base64encodedString = "mybase64encodedstring==";
System.out.println("Base64 encoded string : " + base64encodedString + "\n");
// base64 decode and print
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
System.out.println("Base64 decoded string : " + new String(base64decodedBytes, "utf-8") + "\n");
// deserialize
InputStream in = new ByteArrayInputStream(base64decodedBytes);
ObjectInputStream obin = new ObjectInputStream(in);
Object object = obin.readObject();
obin.close();
System.out.println("Object class is " + object.getClass().toString());
}catch(UnsupportedEncodingException e){
System.out.println("UnsupportedEncodingException :" + e.getMessage());
return;
}catch(IOException e) {
System.out.println("IOException :" + e.getMessage());
return;
}catch(ClassNotFoundException e) {
System.out.println("Class not found");
e.printStackTrace();
return;
}
}
}
请注意,我还没有包含我的实际base64编码字符串,因为害怕其他人在Google上搜索挑战并找到他们可能还需要的答案:)
base64解码字符串的输出类似于以下格式:
Base64 decoded string : ��srcom.myapp.name.model.User��x�g�e�Iidis_adminpasswordtLjava/lang/String;L password2q~usernameq~xpt<somepasswordstring>
bsmith
我得到的错误是:
java.lang.ClassNotFoundException: com.myapp.name.model.User
据我所知,这与com.myapp.name.model.User不属于ClassPath有关吗?我不知道这意味着什么以及我需要做什么来反序列化这些数据。
对此有任何帮助表示赞赏!