01
接口servlet/codesettree
出现拼接的地方
可以看到判断var1 =c的时候,进入该代码块
其中的var5是可控的,最后追加并且查询,但是前面是有加密的
02
加密解密
定位fromflag,找到decode和encode两个函数进行加密和解密
public static final String decode(String s) {
if (s == null) {
return "";
} else {
String decodedString = "";for (int i = 0; i < s.length(); ++i) {
char c;
switch (c = s.charAt(i)) {
case '^':
String s2 = s.substring(i + 1, i + 4 + 1);
decodedString = decodedString + (char) Integer.parseInt(s2, 16);
i += 4;
break;
case '~':
String s1 = s.substring(i + 1, i + 4 - 1);
decodedString = decodedString + (char) Integer.parseInt(s1, 16);
i += 2;
break;
default:
decodedString = decodedString + c;
}
}
return decodedString;
}
}
测试查询数据库名为yyys
END