一类动词 二类动词 三类动词日语的动词都是以う段假名结尾的,有う、く、す、つ、ぬ、む、る、ぐ、ぶ。
一类动词(五段动词)
不以る结尾的动词就是一类动词。
如:
買(か)う、書(か)く、話(はな)す、立(た)つ、死(し)ぬ、読(よ)む、泳(およ)ぐ、呼(よ)ぶ。
以る结尾的动词,る前一个假名在あ段、お段。
如:
終(お)わる、折(お)る、祈(いの)る。
二类动词(一段动词)以る结尾的动词,る前的假名在い段、え段。
如:
起(お)きる、寝(ね)る。
日语中有26个动词,满足二类动词特点,但是为一类动词,它们是:
帰(かえ)る
切(き)る
減(へ)る
要(い)る
知(し)る
走(はし)る 跑,行驶
入(はい)る
返(かえ)る
滑(すべ)る
参(まい)る “来,去”的谦辞
混(ま)じる 夹杂
握(にぎ)る
煎(い)る 煎、炒
練(ね)る 推敲
散(ち)る 凋谢
照(て)る 照耀
蹴(け)る 踢
焦(あせ)る 着急
限(がき)る 限于
湿(しめ)る 潮湿
茂 ...
指令替换技巧 from 《加密与解密》
功能
指令
机器码
指令长度(byte)
替换1字节
nop
90
1
替换2字节
nopnop
9090
11
替换2字节
mov edi,edi
8B FF
2
替换2字节
push eaxpop eax
5058
11
替换2字节
inc eaxdec eax
4048
11
替换2字节
jmp xx
eb00
2
寄存器清零
mov eax,0x00000000
B8 00 00 00 00
5
寄存器清零
push 0pop eax
6A 0058
21
寄存器清零
sub eax,eax/xor eax,eax
2B C0/33 C0
2
测试寄存器的值是否为0
cmp eax,0x00000000je label
83 F8 0074xx/0F84xxxxxxxx
32/6
测试寄存器的值是否为0
or eax,eax/test eax,eaxje label
0B C0/85 C074xx/0F84xxxxxxxx
22/6
置寄存器为0xFFFFFFFF
mov eax ...
afl-fuzz.c main函数简单流程(关键步骤省略)预处理
打印afl程序信息;
1SAYF(cCYA "afl-fuzz " cBRI VERSION cRST " by <lcamtuf@google.com>\n");
检查文件是否存在;
1doc_path = access(DOC_PATH, F_OK) ? "docs" : DOC_PATH;
设置一个种子,方便后续随机量的设置;
12gettimeofday(&tv, &tz);srandom(tv.tv_sec ^ tv.tv_usec ^ getpid());
根据命令行初始化并检查一些参数;
i:输入语料文件夹,对应变量in_dir;
o:fuzz输出文件夹,对应变量out_dir;
M,S:多线程模式下的Master和Server,Master会采取强制确定性变异,然后进行随进行变异,而Server会采取dumb mode进行fuzz,即不进行确定性变异;
f:用来进行fuzz的文件,对应变量out_ ...
afl-as.c粗析查看main函数,关键的就一句:
1if (!just_version) add_instrumentation();
即在汇编文件中添加插桩代码。
该函数中关键部分:
12345678910if (!pass_thru && !skip_intel && !skip_app && !skip_csect && instr_ok && instrument_next && line[0] == '\t' && isalpha(line[1])) { fprintf(outf, use_64bit ? trampoline_fmt_64 : trampoline_fmt_32, R(MAP_SIZE)); instrument_next = 0; ins_lines++;}
即通过汇编判断当前是不是一个分支语句或者函数,然后根据环境是x86还是x86-64添加汇编代码trampoline ...
afl-fuzz.c细节分析之主循环分析cull_queue阶段afl的dry run环节结束后就会进入cull_queue():
1cull_queue();
cull_queue函数分析该函数用于精简队列。
若处于dumb模式或者没有发现更优的样例就返回:
1if (dumb_mode || !score_changed) return;
将标记位score_changed改为0:
1score_changed = 0;
设置temp_v数组中的值为0xff:
1memset(temp_v, 255, MAP_SIZE >> 3);
设置queued_favored和pending_favored为0:
12queued_favored = 0;pending_favored = 0;
遍历queue,将所有样例的favored设置为0:
123456q = queue;while (q) { q->favored = 0; q = q->next;}
若对某条分支信息,top_rated[i]存在(存在favorable ...
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函数。
可以看到这里再读入公式的 ...