Closed R4ph4e1-0x01 closed 3 years ago
你好,c0ny1师傅: 我测试发现你的项目passive-scan-client v0.2转发burpsuit流量存在Bug,会将GET请求转换成POST。检查了项目源码后GET、POST请求发现共同使用了以下两个方法后建立流。
httpUrlConnection.setDoOutput(true)
httpUrlConnection.setDoInput(true)
GET请求不需要body,因而setDoOutput(true)后,即使body为空也会被误识别为POST请求。于是我修改了项目源码,c0ny1师傅有空可以push源码和编译最新的Releases。
//设置控制请求方法的Flag String methodFlag = ""; // 设置通用的请求属性 for(String header:headers){ if(header.startsWith("GET") || header.startsWith("POST") || header.startsWith("PUT")){ if(header.startsWith("GET")){ methodFlag = "GET"; } else if(header.startsWith("POST")|| header.startsWith("PUT")){ methodFlag = "POST"; }//在循环中重复设置了methodFlag,代码非常的丑陋冗余,请见谅 continue; }//判断结束后以键值对的方式获取header String[] h = header.split(":"); String header_key = h[0].trim(); String header_value = h[1].trim(); httpsConn.setRequestProperty(header_key, header_value); } if (methodFlag.equals("GET")){ // 发送GET请求必须设置如下两行 httpsConn.setDoOutput(false); httpsConn.setDoInput(true); // 获取URLConnection对象的连接 httpsConn.connect(); } else if(methodFlag.equals("POST")){ // 发送POST请求必须设置如下两行 httpsConn.setDoOutput(true); httpsConn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(httpsConn.getOutputStream()); if(body != null) { // 发送请求参数 out.print(new String(body)); } // flush输出流的缓冲 out.flush(); }
好的,感谢你的pr
你好,c0ny1师傅: 我测试发现你的项目passive-scan-client v0.2转发burpsuit流量存在Bug,会将GET请求转换成POST。检查了项目源码后GET、POST请求发现共同使用了以下两个方法后建立流。
httpUrlConnection.setDoOutput(true)
httpUrlConnection.setDoInput(true)
GET请求不需要body,因而setDoOutput(true)后,即使body为空也会被误识别为POST请求。于是我修改了项目源码,c0ny1师傅有空可以push源码和编译最新的Releases。