java错误探测

这篇文章描述了一个Java程序,通过输入一个mxn的整数矩阵,统计每行偶数个数和每列奇数个数,检查是否满足偶数行偶数列且奇数列奇数个的条件,输出yes或no。

输入格式:

第1行是两个整数m、n。输入保证1 <= m <= 100, 1 <= n <= 200

接下来输入m行,每行n个整数。输入保证在32位整型取值范围之内

输出格式:

如果输入的每一行偶数的个数是偶数,

并且每一列奇数的个数是奇数,输出yes;否则输出no

思路:

输入两个整数m、n

嵌套循环输入m行,每行n个整数

统计每行偶数个数

统计每列奇数个数

设两个一维数组存储偶数奇数个数

嵌套循环遍历二维数组

统计个数

输入样例1:

3 5

1 7 8 9 6

2 7 5 0 7

4 3 8 2 6

输出样例1:

yes

输入样例2:

3 4

1 8 8 9

2 7 5 0

4 3 6 2

输出样例2:

no

输出样例2提示:

输入的第2列

8

7

3

奇数的个数不是奇数,所以输出 no

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int m = scanner.nextInt();

        int n = scanner.nextInt();

        int[][] a = new int[m][n];

        for (int i = 0; i < m; i++) {

            for (int j = 0; j < n; j++) {

                a[i][j] = scanner.nextInt();

            }

        }

        int[] rowCount = new int[m];

        int[] colCount = new int[n];

        for (int i = 0; i < m; i++) {

            for (int j = 0; j < n; j++) {

                if (a[i][j] % 2 == 0) {

                    rowCount[i]++;

                }

                if (a[i][j] % 2 != 0) {

                    colCount[j]++;

                }

            }

        }

        boolean isValid = true;

        for (int i = 0; i < m; i++) {

            if (rowCount[i] % 2 != 0) {

                isValid = false;

                break;

            }

        }

        for (int j = 0; j < n; j++) {

            if (colCount[j] % 2 == 0) {

                isValid = false;

                break;

            }

        }

        if (isValid) {

            System.out.println("yes");

        } else {

            System.out.println("no");

        }

        scanner.close();

    }

}

### Java框架漏洞扫描工具概述 对于Java框架的安全检测,可以采用多种开源或商业化的漏洞扫描工具来实现自动化和半自动化的安全评估。这些工具能够帮助开发者识别潜在的漏洞并提供修复建议。 #### 常见的Java框架漏洞扫描工具 以下是几种常见的Java框架漏洞扫描工具及其特点: 1. **SSP (Spring Security Prober)** SSP是一款专门针对Spring框架漏洞的扫描工具[^3]。它支持探测和利用多个已知的Spring框架漏洞,例如: - CVE-2022-22947:JeeSpringCloud任意文件上传漏洞。 - CVE-2022-22963:Spring Cloud Gateway SpEL RCE漏洞。 - CVE-2022-22965:Spring Cloud Function SpEL RCE漏洞。 - CVE-2021-21234:Spring Core RCE漏洞。 此外,还涵盖了其他类型的漏洞,如SnakeYAML RCE漏洞、XStream反序列化漏洞等。通过命令行参数`ssp -u <url>`即可快速执行单个URL的信息泄露扫描。 2. **OWASP ZAP** OWASP Zed Attack Proxy(ZAP)虽然不是专门为Java框架设计的,但它广泛应用于Web应用程序的安全测试,包括基于Java的应用程序[^4]。它可以发现SQL注入、跨站脚本攻击(XSS)、路径遍历等多种漏洞,并提供了强大的API接口供开发人员集成到CI/CD流程中。 3. **Arachni** Arachni是一个功能全面的Web应用安全性审计框架,特别适合需要深入挖掘复杂逻辑缺陷的研究者使用。尽管其主要目标并非专注于某特定技术栈,但由于大多数现代企业级项目均依赖于某些形式上的服务器端渲染服务(比如Tomcat/Jetty容器承载下的Servlet),因此间接覆盖到了大量由Java的业务代码层面可能存在的隐患点。 4. **Burp Suite Community Edition** Burp Suite虽然是付费产品,但它的社区版也足以满足基本需求。作为一款交互性强的手动辅助型平台软件,在实际操作过程中允许用户自定义payloads以及调整发送出去的数据包结构等内容;再加上内置爬虫组件的支持,则进一步增强了整体效率表现——尤其是在面对那些动态加载资源较多或者AJAX调用量较大的站点时尤为明显效果显著。 5. **Nessus / OpenVAS** 虽然严格意义上讲它们属于网络层面上更广义范畴内的资产风险评估解决方案之一部分而已,不过鉴于很多时候操作系统级别的配置错误同样会波及上层构建在其之上的各类中间件乃至最终呈现给用户的前端页面本身,故而将其纳入考虑范围之内亦不失明智之举。特别是当涉及到版本过期未及时更新补丁之类的情况发生概率较高的时候更是如此重要不可忽视掉任何细节之处才行啊! --- ### 自定义POC编与扩展能力 除了上述现成可用的产品之外,还可以借助像Java这样的高级语言自行开发针对性更强的小型专项用途程序来进行更加细致入微方面的探索尝试工作呢!正如之前提到过的那样,只要遵循一定的编码规范模式就可以很方便快捷地完成整个过程啦~比如说按照面向对象的思想将每一个具体的漏洞类型分别封装成为一个独立完整的Class单元体之后再统一管理调度起来就显得格外简单明了易懂多了吧?具体做法如下所示: ```java public class VulnerabilityDetector { public static void main(String[] args) throws Exception{ String vulnerabilityType = "sql_injection"; // Example input switch(vulnerabilityType){ case "sql_injection": SqlInjectionTest.test(); break; default: System.out.println("Unsupported vulnerability type."); } } } class SqlInjectionTest { public static boolean test() throws IOException { URL url = new URL("http://vulnerable-site.com/login"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); OutputStream os = connection.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, StandardCharsets.UTF_8)); writer.write("username=' OR '1'='1&password="); writer.flush(); writer.close(); int responseCode = connection.getResponseCode(); InputStream is = (responseCode >= 400)?connection.getErrorStream():connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder result = new StringBuilder(); String line; while ((line = reader.readLine()) != null){ result.append(line); } if(result.toString().contains("Welcome")){ return true; // Vulnerable to SQL Injection }else{ return false; } } } ``` 以上示例展示了如何创建一个简单的SQL注入测试器。通过HTTP POST请求向目标网站提交恶意构造的数据字符串,并依据返回的结果判定是否存在安全隐患。 --- ### 结论 综上所述,无论是选用现有的成熟商业化方案还是自己动手打造专属定制化解法都是可行之路途中的不错选项哦~
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值