精华内容
下载资源
问答
  • FuzzowskiFuzzowski设计核心理念,就是想让任何一个网络安全从业人员都会第一选择去使用它,该工具可以帮助研究人员网络协议进行模糊测试,并且能够在整个测试过程中给我们提供帮助。除此之外,该工具还允许研究...

    1ab352b37da6e44882ae412497a4aab8.png

    Fuzzowski

    Fuzzowski的设计核心理念,就是想让任何一个网络安全从业人员都会第一选择去使用它,该工具可以帮助研究人员对网络协议进行模糊测试,并且能够在整个测试过程中给我们提供帮助。除此之外,该工具还允许研究人员定义链接,并帮助识别服务的崩溃。

    功能介绍1、基于Sulley Fuzzer实现数据收集功能【GitHub传送门】

    2、基于BooFuzz部分功能【GitHub传送门】

    3、Python3

    4、非随机性

    5、需要指定创建数据包的类型(SPIKE fuzzer风格)

    6、允许使用参数创建元数据包,可指定注入点

    7、提供功能强大的命令行终端

    8、允许跳过引起错误的参数

    9、自动化

    10、提供完整可视化的可疑数据包内容

    11、可将PoC存储为Python脚本

    12、提供监控模块帮助实现数据收集

    协议实现1、LPD(Line Printing Daemon):完整实现

    2、IPP (Internet Printing Protocol):部分实现

    3、BACnet(Building Automation&Control networks Protocol):部分实现

    4、Modbus(ICS communication protocol):部分实现

    deb67377c3eef77d8ed8416545824f78.png

    工具安装virtualenv venv -p python3

    source venv/bin/activate

    pip install -r requirements.txt

    工具使用帮助usage: python -m fuzzowski [-h] [-p {tcp,udp,ssl}] [-b BIND] [-st SEND_TIMEOUT]

    [-rt RECV_TIMEOUT] [--sleep-time SLEEP_TIME] [-nc] [-tn]

    [-nr] [-nrf] [-cr]

    [--threshold-request CRASH_THRESHOLD_REQUEST]

    [--threshold-element CRASH_THRESHOLD_ELEMENT]

    [--ignore-aborted] [--ignore-reset] [--error-fuzz-issues]

    [-c CALLBACK | --file FILENAME] -f

    {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}

    [-r FUZZ_REQUESTS [FUZZ_REQUESTS ...]]

    [--restart module_name [args ...]]

    [--restart-sleep RESTART_SLEEP_TIME]

    [--monitors {IPPMon} [{IPPMon} ...]] [--path PATH]

    [--document_url DOCUMENT_URL]

    host port

    █      █

    ████████

    ██████████

    ██  ████  ██

    ██  ████  ██

    ████      ████

    █ ████████████ █

    █  ██████████  █   Fuzzowski Network Fuzzer

    █    █     █   █           �  Fuzzers, inc.

    ██     ██

    位置参数:host                  目的主机

    port                  目的端口

    可选参数:-h, --help            显示帮助信息与退出

    连接参数:-p {tcp,udp,ssl}, --protocol {tcp,udp,ssl}

    协议(默认为tcp)

    -b BIND, --bind BIND     端口绑定

    -st SEND_TIMEOUT, --send_timeout SEND_TIMEOUT

    设置send() 超时(默认为5s)

    -rt RECV_TIMEOUT, --recv_timeout RECV_TIMEOUT

    设置recv() 超时(默认为5s)

    --sleep-time SLEEP_TIME

    测试睡眠间隔 (默认为0)

    -nc, --new-conns      数据包测试后建林新的连接

    -tn, --transmit-next-node

    发送模糊节点图中的下一个节点

    崩溃选项:--threshold-request CRASH_THRESHOLD_REQUEST

    在跳过请求之前设置请求中允许的崩溃数 (默认为9999)

    --threshold-element CRASH_THRESHOLD_ELEMENT

    在跳过原语之前,设置该原语中允许的崩溃次数 (默认为3)

    --ignore-aborted      忽略ECONNABORTED 错误

    --ignore-reset        忽略ECONNRESET 错误

    --error-fuzz-issues   当模糊节点中存在任何连接问题时作为错误记录

    模糊测试选项:-c CALLBACK, --callback CALLBACK

    用回调生成器将回调地址设置为fuzz而不是普通的突变

    --file FILENAME       使用文件内容进行模糊变异

    模糊测试器:-f {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}, --fuzz {cops,dhcp,ipp,lpd,netconf,telnet_cli,tftp,raw}

    可用协议

    -r FUZZ_REQUESTS [FUZZ_REQUESTS ...], --requests FUZZ_REQUESTS [FUZZ_REQUESTS ...]

    待测协议,默认为全部

    dhcp: [opt82]

    ipp: [http_headers, get_printer_attribs, print_uri_message, send_uri, get_jobs, get_job_attribs]

    lpd: [long_queue, short_queue, ctrl_file, data_file, remove_job]

    telnet_cli: [commands]

    tftp: [read]

    raw: ['\x01string\n' '\x02request2\x00' ...]

    重启选项:--restart module_name [args ...]

    重启模块:

    run: ' [ ...]'                           smartplug: 开启或关闭smartplug

    teckin:

    --restart-sleep RESTART_SLEEP_TIME

    设置崩溃后的睡眠秒数 (默认为5)

    监控器选项:--monitors {IPPMon} [{IPPMon} ...], -m {IPPMon} [{IPPMon} ...]

    监控器模块:

    IPPMon: 向目标发送get-attributes IPP消息

    其它选项:--path PATH           设置基于HTTP的待测协议路径 (默认为/)

    --document_url DOCUMENT_URL

    为print_uri设置Document URL

    工具使用样例

    使用默认参数,对get_printer_attribs IPP操作进行模糊测试:python -m fuzzowski printer1 631 -f ipp -r get_printer_attribs --restart smartplug

    使用IPP的元功能来对指纹协议(Finger Protocol)进行模糊测试:python -m fuzzowski printer 79 -f raw -r '{{root}}\n'

    使用IPP的元功能来对指纹协议(Finger Protocol)进行模糊测试,但使用的是一个文件:python -m fuzzowski printer 79 -f raw -r '{{root}}\n' --file 'path/to/my/fuzzlist'

    项目地址Fuzzowski:【GitHub传送门】

    * 参考来源:nccgroup,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

    展开全文
  • 框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询凯哥Java 凯哥java本节主要内容1:根据上节课中提出需求完成②:根据用户名模糊查询${}使用2:测试代码实现3:总结&下节预告本文...

    框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

    凯哥Java 凯哥java

    本节主要内容

    1:根据上节课中提出的需求完成②:根据用户名模糊查询${}的使用

    2:测试代码实现

    3:总结&下节预告

    本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第五篇 mybatis入门程序之需求开发2根据用户名模糊查询.

    声明:本文系凯哥Java(www.kaigejava.com)原创(微信id:kaigejava)。转载请注明出处

    一:根据用户名模糊查询分析

    1.1:使用sql语句模糊查询出用户名是张三的sql语句怎么写?

    SELECT * FROM USER WHERE username LIKE '%张三%'

    查询结果:

    c2f225f49738bcdbbb7c11db4314d702.png

    那么在mybatis怎么使用?

    思考

    1:查询传入的是string类型的。那么parameterType应该怎么写?

    2:mybatis中怎么使用%%并且原文解析?是使用#{}还是使用其他的呢?

    3:既然是模糊查询,查询出的是多条数据,是列表。那么resultType由应该怎么写呢?

    解答:

    1:回忆上节所学的。parameteType:输入参数的Java类型。可以是基本类型、对象类型、map类型等。既然是java类型的。那么String对应java类型完整怎么写呢?

    java.lang.String

    2:使用${}进行处理

    3:再次回忆上节课。resultType:输出结果所映射的java类型(也就是单条结果所以对应的java类型)

    单条结果数据的数据类型。这里单条数据类型是pojo.user所以对应的类型应该是pojo.user了。

    根据以上分析,我们可以在userMapper.xml文件中得到如下配置:

    如果想用#{}写的话:

    测试代码中:

    d668f1569fb77a528f632994880c0329.png

    userMapper.xml中:

    e732bd81ef3e3b36265e735b0295ca54.png

    在代码中写入%%不是很好。所以优化后,使用${}

    01b9e4b26b2e701abe260cb00935fc52.png

    说明:

    ${}:表示一个sql的连接符。如果java中 +作为连接符使用一样 连接前后语句的

    ${value}:里面的value表示输入参数的名称

    如果该参数是简单类型的,那么${}里面的参数名称必须是value

    ${}:这种写法存在sql注入的风险。因为是连接符作用,其中数据原样输出的

    所以需要慎用!!!!

    但是在一些场景下,必须使用${}这种写法。

    比如:排序的是,需要动态传入排序对应列名的。所以需要使用${}来原样输出。不过多解释.

    SELECT * FROM USER WHERE username LIKE '%${value}%'

    二:测试代码:

    42a4f1e51a0f8432aa82bb14db3dfa66.png

    唯一不同的就是查询返回的是list的时候使用的是selectList

    完整代码:

    @Test

    public void findUsersByNameTest() throws Exception{

    //读取配置文件

    //全局配置文件的路径

    String resource = "SqlMapConfig.xml";

    InputStream inputStream = Resources.getResourceAsStream(resource);

    //创建SqlSessionFactory

    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    //创建SqlSession

    SqlSession sqlSession = sqlSessionFactory.openSession();

    //调用SqlSession的增删改查方法

    //第一个参数:表示statement的唯一标示

    //List list = sqlSession.selectList("test.findUserByUserName1", "%张三%");

    List list = sqlSession.selectList("test.findUserByUserName", "小明");

    System.out.println(list);

    //关闭资源

    sqlSession.close();

    }

    执行结果:

    ced782d1b3c612d24da992997f1a9a9e.png

    如果想要查看打印出的sql语句。需要添加log4j日志。

    1:添加jar

    4dd94f787b71c26b12f70c90b247ce20.png

    2:在config文件夹下添加log4j.properties文件。

    内容如下:

    95f4f7e441d4cabe1045c4bab8ceb21e.png

    # Global logging configuration

    log4j.rootLogger=DEBUG, stdout

    # Console output...

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    重新执行查看控制台输入语句:

    35e9b27ef412931f3691f55534a2a1cb.png

    三:总结&下节预告

    通过本文学习,我们需要掌握的:

    1:${}的使用。

    ${}的作用是什么?在什么请求下需要使用

    ${}为什么要慎用!!

    2:log4j的使用

    下节预告:

    现在我们已经完成了根据id精确查找、根据用户名进行模糊查找。接下来我们要学习的是,向数据库中添加数据。那么在向数据库插入数据需要注意些什么呢?欢迎学习下一篇:《框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据》

    展开全文
  • 描述场景初学java的时候,线程安全和不安全一直都是一个模糊的状态,接下来的这段日志我会继续深入了解多线程,以及线程安全的相关知识,下面我用一个简单的小案例来测试一下多线程场景下导致的不安全问题.>设计场景...

    描述场景

    初学java的时候,对线程安全和不安全一直都是一个模糊的状态,接下来的这段日志我会继续深入了解多线程,以及线程安全的相关知识,

    下面我用一个简单的小案例来测试一下多线程场景下导致的不安全问题.

    >设计场景:

    一个学校统计这个学校有多少个学生,我们每创建一个学生,学生就加1,这样我们就用这个计数来统计学校最后有多少学生.

    - 学生实体类

    public class Student {

    private String name;

    private String code;

    private int age;

    public static int count = 0;

    public Student(){

    count++;

    }

    public Student(String name) {

    this.name = name;

    count++;

    }

    public Student(int age) {

    this.age = age;

    count++;

    }

    public Student(String name, String code, int age) {

    this.name = name;

    this.code = code;

    this.age = age;

    count++;

    }

    @Override

    public String toString() {

    return "Student{" +

    "name='" + name + '\'' +

    ", code='" + code + '\'' +

    ", age=" + age +

    '}';

    }

    }

    -线程用来表示每个班级创建多少个学生

    public class StudentThread extends Thread {

    @Override

    public void run() {

    //每个班级创建20个人,循环一次创建两个人

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

    Student s = new Student();

    System.out.print(Student.count+" ");

    Student s1 = new Student(i);

    System.out.print(Student.count+" ");

    }

    }

    }

    -测试类

    public class TestThread {

    public static void main(String[] args) {

    //假设有两个班级,那就是要创建1个线程

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

    new StudentThread().start();

    }

    }

    }

    -测试结果

    28940821cf868ecaa65c5d5e718f6841.png

    结果分析:从结果上来,返回的数字是我们预期想要的结果是从1-20个这么计数没错,但这个是在1个线程使用的时候.相当于此时就一个班级在统计人,

    所以是不可能统计错的,那么现在又加了一个班级,结果又是怎么样的呢?

    -测试类

    public class TestThread {

    public static void main(String[] args) {

    //假设有两个班级,那就是要创建1个线程

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

    new StudentThread().start();

    }

    }

    }

    -测试结果

    3adde5f02102cd874b4f80477ddb6e75.png

    11d984f4c0bb92f139a90485f562796b.png

    结果分析:从结果可以看到,有重复的数字,说明两个线程同时的时候,会存在不清楚数据目前的状态,就会有重复的数据,

    导致线程不安全.以此类推,2个线程都出现这种情况,那么增加到10个线程,那么错误率会更高.

    那么我们要怎么处理,才能使线程变得安全?解决方案就是给线程加锁,在别人使用的时候,其他人不能去修改它,只能等别人使用完后才能进去操作这个线程.

    -改进方法

    public class StudentThread extends Thread {

    @Override

    public void run() {

    //这是一把钥匙,只有拿到这把钥匙才能进synchronized(相当于门锁)这个方法

    Boolean Flag = true;

    synchronized (Flag) {

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

    Student s = new Student();

    System.out.print(Student.count+" ");

    Student s1 = new Student(i);

    System.out.print(Student.count+" ");

    }

    }

    }

    }

    -测试结果

    3281b8edba2c26ff28913ad16cd33f5e.png

    370b0ee284c23f355976af3444832fb6.png

    d669873af8b59157ec75dc45ca8ec026.png

    结果分析:不过运行多少次,增加多少个线程,都不会有重复的数据,也不会乱序,因为每一个线程进来都要拿一把钥匙,这个线程进去后,其他线程在外等候,

    等这个线程处理完归还钥匙,其他线程拿到钥匙才能进去.

    总结

    在多线程的情况下会出现线程安全问题,需要我们加锁,来保证线程的安全,单线程的情况下不会有线程安全的问题.大家还可以使用synchronized的方法来进行修改,我用的是synchronized块来加锁.

    以上只是个人的见解,可能还有很多漏洞.请指教.

    展开全文
  • 这是一个简单的基准测试和演示应用程序,它说明了Android 2016中可能发生的模糊。值得注意的是,此应用程序使用Android的Renderscript v8支持库进行快速模糊处理。 另外,请查看我目前正在使用的 ,该使此处显示的...
  • 静态变量操作存在继承时还是存在一些模糊,做了个简单的测试: class Test { private String mName; public Test(String name) { setName(name); } public void setName(String name) { mName = name;...

    对静态变量的操作存在继承时还是有一些模糊,做了个简单的测试:

    class Test
    {
    	private String mName;
    
    	public Test(String name) {
    		setName(name);
    	}
    
    	public void setName(String name) {
    		mName = name;
    	}
    
    	public String getName() {
    		System.out.println(mName);
    		return mName;
    	}
    }
    
    class A {
    	protected static String TAG = "A";
    	protected static Test mTest;
    
    	public A() {
    		
    	}
    
    	public Test getTest() {
    		return mTest;
    	}
    }
    
    class B extends A
    {
    	protected static String TAG = "B";
    
    	public B() {
    		mTest = new Test(TAG);
    	}
    }
    
    class C extends A
    {
    	protected static String TAG = "C";
    
    	public C() {
    		mTest = new Test(TAG);
    	}
    }
    
    public class Demo
    {
    	public static void main(String[] args) {
    		B b = new B();
    		C c = new C();
    		b.getTest().getName(); // print C
    		c.getTest().getName(); // print C
        }
    }


    JAVA 中如果继承的父类中存在静态变量,多个子类操作的还是同一个静态变量地址,因此子类的操作是要相互覆盖的。

    如果子类重写了父类的方法和静态变量则专属子类了,其它子类的操作也就不会相互覆盖了。




    展开全文
  • 静态变量操作存在继承时还是存在一些模糊,做了个简单的测试:class Test{private String mName;public Test(String name) {setName(name);}public void setName(String name) {mName = name;}public String ...
  • 静态变量操作存在继承时还是有一些模糊,做了个简单的测试:class Test{private String mName;public Test(String name) {setName(name);}public void setName(String name) {mName = name;}public String ...
  • ThreadLocal一般用来保存多个线程共享变量修改使得每个线程都能访问自己修改后变量值。...一 应用://用ThreadLocal声明一个共享变量//普通类中实例变量1.1 测试带ThreadLocal共享变量结果:1.2...
  • 展开全部摘要图像识别是目62616964757a...本文仅使用Java实现了一个简单图像文本二值处理,关于识别并未实现。步骤建立文本字符模板二值矩阵对测试字符进行二值矩阵化处理代码/** @(#)StdModelRepository.j...
  • 最后还处理了一些Java虚拟机和Java语言概念的模糊之处。 针对本书,读者有任何勘误或模糊之处,均可发邮件到jvms-comments-ww@oracle.com。 2004年发布的Java SE 5.0版为Java语言带来了翻天覆地的变化,但是对Java...
  • 可以发现违背程序编写标准问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构  检查等内容。...
  • 最近在帮项目封装分页时候,本来想用mybatis拦截器,后来想着这样太重量级了,并且跟项目耦合,所以决定封装一个轻量级工具,再后来发现,一些基础增删改查,分页,模糊查询,大于小于不等于,in,notin 这些...
  • 另外,本文是Hibernate常见单表操作进行了练习,包含了增删改,模糊查询,部分字段查询,分页查询,多条件查询,分页+条件查询等。 项目下载:见博主下载资源。hibernate增删改查和分页+java8 项目环境 ...
  • 近期又重新翻了下Java基础,访问权限修饰符public/protected/dafault/private又重新有了一层认识,之前只是知道他们权限即作用范围分别是所有包、同一包及其他包子类、同一包、自己。但具体到类、成员变量及方法...
  • 核心Java程序设计技术

    2021-04-16 12:20:13
    它篇幅宏大,对Java标准版(Java Standard Edition – JSE)大大小小各种问题做了细致入微介绍。对学习者来说,它无疑是众多介绍Java基础技术书籍中最佳选择。   为了方便学习者掌握本书,我对全书内容进行...
  • 这些问题对于认真学习java的人都要必知的,当然如果你只是初学者就没必要那么严格了,那如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。  一、到底要怎么样初始化!  本问题讨论...
  • 【实例简介】利用Java的反射机制实现的万能DAO工具类,包含对应的测试代码。具体功能包括:单表查询,多表查询,模糊查询,添加,修改,删除等。利用万能DAO可以数据库中任意表进行操作,只需一个DAO类即可完成。...
  • 不知道有没有开发人员和我一样,有时一些API说明理解比较模糊,总想着能直接验证一下自己理解就好了,而不是需要去项目写测试代码来验证自己想法。即API文档应具备直接执行能力。 Swagger就是这样一个利器...
  • 所谓数据挖掘就是从大量、不完整、有噪声模糊的、随机数据中,提取隐含在其中、人们事先不知道、但又是潜在有用信息和知识过程。该技术在银行业、市场业、零售业、保险业及电信业等诸多领域数据...
  • 前言 有几个知识点,我一直很模糊、很欠缺,现在开始重新学习一下 ...JUnit是一个Java语言单元测试框架。...测试分类 ...我们以往代码的测试是怎么做呢? 一般都是如下吧: public clas...
  • 金蝶EAS性能测试概述

    千次阅读 2012-05-21 10:51:25
    做过一段时间EAS性能测试,好多年过去了,突然发现这一段时间所作东西都有些模糊了,这里大概记录一下,以后好帮助回忆 采用LoadRunnerV8.0的Java Vuser协议进行测试。EAS采用自主产权ORM-RPC协议,...
  • 利用Java的反射机制实现的万能DAO工具类,包含对应的测试代码。具体功能包括:单表查询,多表查询,模糊查询,添加,修改,删除等。利用万能DAO可以数据库中任意表进行操作,只需一个DAO类即可完成。阅读本代码...
  • 代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计一致性, 代码标准遵循、可读性,代码逻辑表达正确性,代码结构合理性等方面;可以发现违背程序编写标准问题,程序中不安全...
  • Java文字图像识别

    2016-06-16 21:40:12
    本文仅使用Java实现了一个简单图像文本二值处理,关于识别并未实现。 步骤 建立文本字符模板二值矩阵 对测试字符进行二值矩阵化处理 代码 /*   * @(#)StdModelRepository.java  *   * This ...
  • 作为一个测试行业菜鸟,由于投身于一个小公司,包揽所有的测试。刚开始功能测试到接口测试,稳定性测试,兼容性...说是自学,但是服务器这些概念还是很模糊的我,还是得先了解下软件运行环境,服务器等概...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 124
精华内容 49
关键字:

对java的模糊测试

java 订阅