当前位置: 首页 > news >正文

AFLNET lightftp项目报错解决方法

在学习AFLNET的时候,本人尝试对示例项目中的lightftp进行fuzz,而后出现如下报错:

AFLNet - the states hashtable should always contain an entry of the initial state

在github项目issue里看到了有人的问题和我一摸一样,Stack Overflow里也有人问题和我相同,但是始终没有找到解决办法:
在这里插入图片描述

作者的建议是去看一下AFLNET和服务端通信的流量是不是出什么问题了,于是用tcpdump截取流量查看了一下,的确发现了问题,我的种子文件是一段和lightftp服务端正常通信的流量:
在这里插入图片描述

但是抓取到的AFLNET与server的流量如下:
在这里插入图片描述

连接上服务端之后给出的信息不是ready二十表示连接已达到最大限制数量,所以导致没有任何有效状态返回给AFLNET,最后AFLNET爆出上图所示的错误。

随后在fftp.conf文件中找到最大登录用户数量限制:
在这里插入图片描述
默认为10,按理来说应该是够的,改成一百之后试了一下,错误仍然存在,没有得到解决。

于是阅读了一下lightftp的源码,查看其中的ftpserver.c文件:
在这里插入图片描述

通过搜索报错信息找到这里,然后发现应该是rv!=0导致的报错,后来增加了一句调试代码之后发现只打印了一次,那么就意味着不是maxuser不够用,而是出现了其他问题导致rv不是0,然后break之后执行了patch进去的两行代码,导致程序直接退出了。所以尝试将这两句注释掉

在这里插入图片描述
但是执行之后还是不行,此时发现,如果自己开一个server,然后去启动AFLNET是可以跑得,界面如下:
在这里插入图片描述

但是仍然有问题,total path那里一直是1,也就是说虽然AFLNET和服务端交互了,但是由于是自己启的服务端,所以并没有任何的覆盖率反馈和路径检测,虽然从启动的服务端能够看出来的确在fuzz,但是效率必定很差,并且能否检测出crash也说不好。继续对lightftp源码进行调试,既然问题出在pthread_create的返回值上,那么就将其返回值记录下来看看,继续对源码进行如下修改:
在这里插入图片描述

然后去查看log,发现返回值一直是11,并不是0,11表示的是线程已满,不能再继续新建线程,按理来说这种报错应该去pthread_join,但是对于作者给出的patch能够看出来,显然我们希望的形式是这个server每执行一次就关闭一次,所以按理来说这里的线程应该只有main里的一个和ftpmain里的一个,也就是最多两个线程才对,既然能走到这里,可以确定的是main里的线程是正确创建了的,为什么fftp这个程序连两个线程都创建不起来呢?

后来猜测也许和AFLNET的运行机制有关,AFLNET会通过fork的形式启动fftp,也就是服务端,猜想会不会是fork出来的进行对线程数量以后特殊要求呢?

既然如此,反正我们每次也只需要一个线程,那干脆将ftpmain里的线程去掉,直接去调用ftp_client_thread,不通过线程的方式,于是将源码修改成下面的形式:
在这里插入图片描述

这里注意已经将之前作者的patch又改回来了,即原作者的patch文件不作任何修改。

然后再去启动AFLNET,此时并不需要我们额外手动去开启服务端,直接就可以正常运行了

在这里插入图片描述
可以看到除了有些慢之外一切都已经正常了,并且也生成了较为漂亮的状态转换图:

在这里插入图片描述

看到这里其实已经明白,在使用AFLNET的时候无论是在fuzz ftp协议还是dns协议还是其他什么,出现开头那种报错的原因,很有可能是服务端采用了多线程的工作方式。

相关文章:

AFLNET lightftp项目报错解决方法

在学习AFLNET的时候,本人尝试对示例项目中的lightftp进行fuzz,而后出现如下报错: AFLNet - the states hashtable should always contain an entry of the initial state 在github项目issue里看到了有人的问题和我一摸一样,Stack Overflow里…...

av 146 003

121. 团队章程的目标是什么? A. 使团队正规化,以便能够清楚地了解资源分配和参与情况 B. 创造一个团队可以自我管理和自我指导的环境 C. 创造一个环境,使团队成员能够尽其所能地工作 D. 创造一种团队归属感,促进包容性和协作性的行为 12…...

干了1年“点点点”,自己辞职了,下一步是继续干测试还是转开发?

最后后台有个粉丝向我吐槽,不知道怎么选择了....下面就他的情况说说怎么选择? 目前已经提桶跑路,在大工厂里混了半年初级低级功能测试经验,并没有什么用。测试培训班来的。从破山村贫困户贫困专项出去的,学校上海的。…...

国产技术迎来突破,14nm芯片横空出世,低代码也有好消息

芯片,被称为工业时代的“粮食”,小到手机手环,大到飞机轮船,几乎各个行业都不离开芯片的支持,其重要性不言而喻。而我国在这一领域一直较为薄弱。 一、“芯片之路坎坷” 由于国内半导体芯片市场底子薄弱、没有主动权…...

使用clickhouse-backup工具备份clickhouse数据库

工具官网:https://github.com/AlexAkulov/clickhouse-backup/dockerhub工具官网:https://hub.docker.com/r/alexakulov/clickhouse-backup注意:这个工具只支持MergeTree 系列表引擎一、clickhouse在容器外的备份和恢复若clickhouse装在容器外…...

python cartopy绘制扇形区域图/cartopy绘制北极部分区域

问题 当绘图时,往往并不需要绘制整块区域,而是想聚焦于局部地区,此时我们需要绘制扇形图。 在cartopy中,只提供普通正方形的框架,如果我们需要其他,边界,需要自己去绘制,最常见的是…...

如何设置股票接口版交易软件的指标涨跌家数?

如何设置股票接口版交易软件指标涨跌家数?今天小编就以通达信为例给大家介绍一下,很多人其实不知道通达信里面有个很厉害的股票情绪的指标,叫做通达信涨跌家数,打开在通达信软件k线界面,然后输入880005就可以找到了。下…...

C++之lambda函数(匿名函数)

lambda函数简介lambda函数是C11标准新增的语法,也称为lambda表达式或匿名函数。lambda函数的特点是:距离近、简洁、高效和功能强大。优点声明式编程风格:就地匿名定义目标函数或函数对象,有更好的可读性和可维护性。简洁&#xff…...

WGCNA | 值得你深入学习的生信分析方法!~(网状分析-第四步-模块的功能注释)

1写在前面 前面我们用WGCNA分析得到多个模块,其中有一些模块和我们感兴趣的表型或者临床特征是相关的。🥳 接着就是要做模块的富集分析了,帮助我们了解这些模块的基因都有哪些已知的功能,涉及到哪些通路,在哪些疾病中最…...

如何看待年轻人躺平式生活观?

theme: smartblue 如何看待年轻人躺平式生活观? 躺平:网络流行词。指无论对方做出什么反应,你内心都毫无波澜,对此不会有任何反应或者反抗,表示顺从心理。另外在部分语境中表示为:瘫倒在地,…...

JS 设计模式 - 怎么让你的代码提示一个档次

设计模式是我们在解决一些问题的时候 ,针对特定的问题给出的简介并且优化的处理方案 这篇文章说提及到的 JavaScript 设计模式将围绕着封装方法类来展开叙述 构造器模式 构造器模式本质就是我们平常在编码中常用的封装方法,重复利用构造函数 // 这是…...

遮挡贴图(Occlusion Map)和微表面贴图(Microsurface Map)

遮挡贴图(Occlusion Map) 在3D图形学中,遮挡(Occlusion)是指光被物体挡住。即便是在PBR中,环境光在某些应该被遮挡的地方,也会以古怪的方式被反射。遮挡贴图(Occlusion Map&#xff…...

【Vue】基本交互指令

Vue el挂载点 <div id"app">{{message}} </div> <script>var app new Vue({el:"#app",data:{message:"hello"}}) </script>Vue实例的作用范围&#xff1a;管理el选项命中的元素及其内部的后代元素使用其他的选择器&a…...

MySQL 中的 distinct 和 group by 哪个效率更高?

结论先说大致的结论&#xff08;完整结论在文末&#xff09;&#xff1a;在语义相同&#xff0c;有索引的情况下group by和distinct都能使用索引&#xff0c;效率相同。在语义相同&#xff0c;无索引的情况下&#xff1a;distinct效率高于group by。原因是distinct 和 group by…...

Spring 框架源码(六) Bean的生命周期全流程源码解析

Spring框架作为Java王国的地基&#xff0c;我觉得它包含了很多精妙的设计&#xff0c;例如Bean工厂设计、Bean的生命周期、tx、aop、web、mvc等&#xff0c;最核心基本的Bean设计是Spring 的框架的灵魂&#xff0c;本文就Bean的生命周期全流程做源码程度上的解析&#xff0c;欢…...

运维服务商低成本提升服务质量解决方案

在信息化高速发展的今天&#xff0c;网络建设的重要性不言而喻&#xff0c;更多客户选择将运维服务外包或托管给运维服务商&#xff0c;市场需求愈大竞争压力愈大&#xff0c;想要脱颖而出势必要优化自身提高服务质量&#xff0c;最好是低成本、大提升&#xff0c;nVisual助力渠…...

Raft 一致性算法

Raft Raft提供了一种在计算系统集群中分布状态机的通用方法&#xff0c;确保集群中的每个节点都同意一系列相同的状态转换。 一个Raft集群包含若干个服务器节点&#xff0c;通常为5个&#xff0c;这允许整个系统容忍2个节点的失效。每个节点处于以下三种状态之一&#xff1a; …...

驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

目录一、EC20 4G模块简介二、根据移远官方文档修改EC20 4G模组驱动  1、因为EC20 4G模组min-pice接口其实就是usb接口&#xff0c;因此需要修改Linux内核源码drivers/usb/serial/option.c文件&#xff0c;如下图&#xff1a;  2、根据USB协议的要求&#xff0c;需要在drive…...

Web自动化测试——常见问题篇

文章目录一、什么是自动化测试二、为啥进行自动化测试&#xff08;优点&#xff09;三、Webdriver 的工作原理四、显示等待和隐式等待的区别五、什么样的项目适合做自动化六、自动化测试的流程七、如何分析生成的自动化测试报告一、什么是自动化测试 所谓的自动化测试就是使用…...

快速实现Modbus TCP转BACnet IP协议的方案

一、需求背景 BACnet是用于智能楼宇自控系统的主流通信协议&#xff0c;可用在暖通空调系统&#xff08;HVAC&#xff0c;包括暖气、通风、空气调节&#xff09;&#xff0c;也可以用在照明控制、门禁系统、火警侦测系统及其相关的设备。楼宇中的受控设备都通过BACnet协议连接到…...

Unity CircleLayoutGroup 如何实现一个圆形自动布局组件

文章目录简介实现原理Editor 编辑器简介 Unity中提供了三种类型的自动布局组件&#xff0c;分别是Grid Layou Group、Horizontal Layout Group、Vertical Layout Group&#xff0c;本文自定义了一个圆形的自动布局组件Circle Layout Group&#xff0c;如图所示&#xff1a; Ra…...

springcloud+nacos+gateway案例

一、先搭建好springcloudnacos项目地址:https://javazhong.blog.csdn.net/article/details/128899999二、spring cloud gateway简述Spring Cloud Gateway 是Spring Cloud家族中的一款API网关。Gateway 建立在 Spring Webflux上&#xff0c;目标是提供一个简洁、高效的API网关&a…...

实习这么久,你知道Maven是如何从代码仓库中找到需要的依赖吗?

目录 碎碎念 Maven是如何找到代码仓库里需要的依赖的&#xff1f; 如何根据坐标在本地仓库中寻找所需要的依赖&#xff1f; 如何根据坐标在远程仓库中寻找所需要的依赖&#xff1f; Maven 如何使用 HTTP 或 HTTPS 协议从远程仓库中获取依赖项&#xff0c;请详细解释其原理…...

低代码/零代码的快速开发框架

目前国内主流的低代码开发平台有&#xff1a;宜搭、简道云、明道云、云程、氚云、伙伴云、道一云、JEPaaS、华炎魔方、搭搭云、JeecgBoot 、RuoYi等。这些平台各有优劣势&#xff0c;定位也不同&#xff0c;用户可以根据自己需求选择。 一、阿里云宜搭 宜搭是阿里巴巴集团在20…...

C# 中常见的设计模式

设计模式是一套被广泛应用于软件设计的最佳实践&#xff0c;它们可以帮助开发者解决特定的问题&#xff0c;提高代码的可重用性、可读性和可维护性。本文将介绍 C# 中常见的几种设计模式&#xff0c;并提供相应的示例代码。 工厂模式 工厂模式是一种创建型设计模式&#xff0c…...

promethues/servicemonitor

目录 1.promethues 能保证源源不断地采集/metrics 信息吗&#xff1f;每次都是最新的吗 2.部署servicemonitor 的作用是什么&#xff1f; 3.pod 部署采集数据直接上报promthues &#xff0c;不通过servicemonitor 可以吗&#xff1f; 4.你说的"此外&#xff0c;如果部署…...

postman使用简介

1、介绍 postman是一款功能强大的网页调试和模拟发送HTTP请求的Chrome插件&#xff0c;支持几乎所有类型的HTTP请求 2、下载及安装 官方文档&#xff1a;https://www.getpostman.com/docs/v6/ chrome插件&#xff1a;chrome浏览器应用商店直接搜索添加即可&#xff08;需墙&…...

@DS注解在事务中实现数据源的切换@DS在事务中失效【已解决】

在Springboot的application.yml中的配置&#xff1a; spring:datasource:url: jdbc:mysql://localhost:3306/test2?serverTimezoneUTC&useUnicodetrue&characterEncodingutf8driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: rootdynamic:primar…...

Java I/O之文件系统

一、全文概览 在学习文件系统之前&#xff0c;需要了解下Java在I/O上的发展史&#xff1a;在Java7之前&#xff0c;打开和读取文件需要编写特别笨拙的代码&#xff0c;涉及到很多的InputStream、OutputStream等组合起来使用&#xff0c;每次在使用时或许都需要查一下文档才能记…...

Mysql元数据获取方法(information_schema绕过方法)

前提&#xff1a;如果waf或其它过滤了information_schema关键字&#xff0c;那我们该如何获取元数据呢&#xff1f;能够代替information_schema的有&#xff1a;sys.schema_auto_increment_columnssys.schema_table_statistics_with_bufferx$schema_table_statistics_with_buff…...

网站 keyword title 字数/成品短视频网站源码搭建

1.java当中的四种引用 强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用。不同的引用类型主要体现在GC上: 强引用&#xff1a;如果一个对象具有强引用&#xff0c;它就不会被垃圾回收器回收。即使当前内存空间不足&#xff0c;JVM也不会回收它&#xff0c;而是抛…...

php怎么做网站/国际大新闻最新消息

计算机组成原理A形成性考核作业二(参考答案)一、选择题&#xff1a;1&#xff0e;计算机硬件能直接识别和运行的只能是_______程序。A&#xff0e;机器语言   B&#xff0e;汇编语言   C&#xff0e;高级语言   D&#xff0e;VHDL答&#xff1a;A2&#xff0e;指令中用到…...

做网站被骗没有居住证能不能告他/小网站怎么搜关键词

ThinkPHP 5.0 MongoDb驱动 首先安装官方的mongodb扩展&#xff1a; http://pecl.php.net/package/mongodb 找到对应的php版本的扩展 然后&#xff0c;配置应用的数据库配置文件database.php的type参数为&#xff1a; type > \think\mongo\Connection, 即可正常使用M…...

个人如何做网站/app注册推广拉人

当初学 Python 时&#xff0c;想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1&#xff09;忘记在 if , elif , else , for , while , class ,def 声明末尾添加 &#xff1a;&#xff08;导致 “SyntaxError &#xff1…...

做网站需求文档/南宁整合推广公司

代码如下2113&#xff1a; 1). xml可能的中文编码错误处理 def xml_Error_C(filename): fp_xmlopen(filename) fp_x#中文乱5261码改正 for i in range(os.path.getsize(filename)): i1 afp_xml.read(1) if a&: fp_xml.seek(-1,1) if fp_xml.read(6) : i5 continue else: fp…...

wordpress 大前端2.0/商业软文怎么写

使用Sequelize和MySQL数据库&#xff0c;我试图在联结表中实现复合主键组合&#xff0c;但遗憾的是没有结果 .我有 table &#xff1a;它们与许多人有很多关系 . 在联结表user_has_project中&#xff0c;我想要两个主键组合&#xff1a;user_id和project_id .Sequelize模型定义…...