准备

主要就是课程资料和lab练习,额外练习资源在后面参考资料中

考试

尽可能多练习熟悉各种坑,我是只做完了课程中的内容,课后作业都没做完,三个challenge也是只大概看了下,一个都没做

考试内容

具体太细节的不能说,只写大概内容

三个题目

  1. 给有基础 crash poc,DEP绕过 30分
  2. custome shellcode 30分
  3. 逆向 ,DEP + ASLR 绕过 40分

满分100分,60分及格,没有步骤分,所以必须要完全做出来两个题目

DEP bypass题目

题目会有很明确的限制,比如要求你必须使用某个函数进行

并且过滤完badchars后可用gadgets也很少

然后shellcode部分也会坑,badchars比较多,如果继续使用rop编码解码处理badchars的话,剩余空间不够,只能使用自定义shellcode,修改一些会产生badchars的指令,生成可用shellcode

custome shellcode

这部分就是纯汇编代码实现题目要求,考试很明确的要求了需要调用什么函数达成什么效果, 测试效果就是python keystone-engine + windbg

最关键的就是要注意position independent codeNULL-Free, 生成的shellcode如果有null byte,用python运行是没问题的,然而,在真正的漏洞利用中使用这个 shellcode 会有问题,因为 NULL 字节通常是一个坏字符

所以需要满足这些基本要求,生成的操作码不能有null字节,这个自己windbg一点点确认,然后修改对应汇编指令为没有null byte,但效果相同的其他指令即可

逆向题目

根据考试说明是需要逆向找到绕过ASLR的方式,然后还有内存漏洞控制eip,以及后续的DEP绕过部分,但考试的逆向只允许使用IDA免费版本,不允许使用IDA Pro,Ghidra之类的其他工具

这个题目就大概看了下,直接放弃了

通用

武器化是基本要求,靶机操作系统环境版本可能和调试机不一样,所以gadget只能使用程序本身的,不能使用系统dll中的

最重要的就是OffSec一直要求的 TryHarder .我是因为完全没有任何额外练习,考试中各种浪费时间,不止一次想跟监考说放弃考试,但继续坚持,都会在几个小时内找到突破口

参考资料

学习 & 练习资源

scripts

DEP bypass

shellcode

syscall

fmtstr

SLAE Assignment

这个是针对SecurityTube Linux Assembly Expert的学习资料,学习汇编代码编写shellcode的方法比较有用:

CTP/OSCE Prep

和上面的SLAE Assignment 系列同一个作者:

OSCE Exam Practice

epi的一个系列教程,标题是老的OSCE,但对现在的OSED仍然很有用:

Zero Day Zen Garden: Windows Exploit Development

FuzzySecurity | ExploitDev

后面还有heap和kernel内容,对于OSED来说看到第7篇就够了

后面剩余部分:

Windows Exploit Development by Securitysift

Corelan的系列,每篇都很长

中文资料

Exploit开发系列教程

跟小黑学漏洞利用开发

Windows Exploitation by n0maj1o24

这个分类下自行查看

Reviews

视频

中文