CTF攻略.pptx
《CTF攻略.pptx》由会员分享,可在线阅读,更多相关《CTF攻略.pptx(40页珍藏版)》请在冰豆网上搜索。
CTF基础知识byExpl0it2017-04内容提要第一块内容:
CTF简介第二块内容:
MISC第三块内容:
WEB第四块内容:
Reverse第五块内容:
PWNCTF(CaptureTheflag)题目内容种类繁杂,覆盖面广难度高,考察全面。
主要包括MISC,WEB,RE,PWN四个大类常规内容包含:
程序逆向,漏洞挖掘,Web渗透,加密解密,数据隐藏,远程利用,各类编程等等比赛中出现核心题目,分数的风水岭:
程序逆向,漏洞挖掘(包括web漏洞),远程利用MISC的考核内容,由于覆盖面大,谁都可以做,坑点较多第一部分:
MISC首先了解一下CTF中会用哪些加密方式Base64最常见,也是最容易解开的。
可以使用火狐的hackbar插件解密,由于base64加密算法的特殊,一般加密后的字符串会已=或者=结尾。
栅栏密码把要加密的明文按几个分成一组,然后每一组的第一个字连起来,形成一段无规律的话。
如有个ctf中出现的一道题目:
一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏.tnc0afsiwalkes,hwit1rg,nptttessfuuauhmqikem,nhuiouosarwCniibecesnren首先了解一下CTF中会用哪些加密方式Unicodeu670bu53cbuff0cu4f60u542cu8bf4u8fc7u5b89u5229u5417uff1fu000du000a在线解密:
http:
/XXDDAGFFXGFDXGDDDGGAXFFA提示:
密文解密的话先要知道加密的方法。
解开:
flagxidianctfASCII编码、Base64编码、Shellcode编码(hex编码)、MorseCode摩尔斯电码、Url编码。
换位加密:
ROT-5,ROT-13,给出的字符串相对真实的字符串的偏移。
在线工具:
http:
/noother_says_correct($number)$one=ord
(1);$nine=ord(9);/Checkalltheinputcharacters!
for($i=0;$i=$one)&($digit=$nine)/Aha,digitnotallowed!
returnfalse;return$number=3735929054;0xDEADC0DE第三部分:
逆向逆向工程(RE)汇编语言调试工具反汇编工具WindowsAPI编程汇编语言是基于PC的cpu的推荐书籍:
RE4B(逆向工程入门指南)MSDN推荐调试器OllydbgOD指令restartCtrl+F2stepIntoF7stepoverF8ExecutetillReF9GotoCtrl+GComment;BreakPointF2RunF9虽然OD很久之前就停止了更新。
但它仍然是最容易上手的windows调试器推荐反汇编IDA推荐理由:
友好的界面和F5伪代码功能。
IA-32寄存器寄存器是CPU内部用来存放数据的小型存储区域。
上图是通用寄存器结构图,还有一个最重要的EIP寄存器没画出来写在开始逆向前1)CTF逆向题的种类Keyfile型:
程序读取一个key文件,通过文件内容进行算法分析得到验证码Serial或Name/Serial型:
类似注册破解一样,一般是对输入做一系列的运算,然后和正确的Seral比较。
追码的话定位到最后比较处就ok,但是如果算法比较。
那就要完整的逆向。
体力活2)窗口类断点技巧CreateWindow创建的窗口,向上找RegisterClass注册窗口类,这个API中有窗口的回调函数。
DialogBoxParam函数创建的窗口,参数中寻找窗口回调函数。
WNDPROC堆栈跟踪逆向分析1通过正确的输入来获取key.Key不一定需要保存在内存中,但很多出题人为了降低难度一般会让key出现在内存中。
但有时候为了挖坑,key是不会出现在内存中的。
逆向分析2逆向分析,关键点在于静态的分析,拿到程序前,不是立刻加载到OD中。
应该先运行一遍,看运行效果,PEID分析程序的编译语言和有无壳。
前期的分析有时候会事半功倍逆向分析3、4会在程序中出现的key如何断在关键位置?
逆向分析5修复程序进行逆向分析然后找到key这个就是考察逆向的基本功了。
Tip:
逆向工程的逆是对正向算法的逆。
不是对程序执行流程的逆向。
对程序执行流程一定要正向的搞清楚。
第4部分:
PWNPWN漏洞利用漏洞利用的内容很多:
栈溢出(常见)堆溢出格式化字符串漏洞%p%x%n释放重利用UFA。
讲讲堆栈溢出确认溢出输入确认保护措施Shellcode生成www.exploit-输入shellcode测试。
over常见的windows保护机制绕过GS(stackcookie)一种针对堆栈溢出的攻击缓解技术dword开启/GS选项的编译器通过在函数头部与尾部增加代码块的方式来检测堆栈溢出。
当函数执行时,这段代码会在堆栈本地变量与函数返回地址之间保存一个随机值(即stackcookies)。
函数返回时会检查堆栈中存放的随机值是否被修改,如果被修改则意味着发生了堆栈溢出,从而终止程序运行,阻止恶意代码执行。
绕过方法:
覆盖SEH链表,GS没有对堆栈上的链表进行保护。
可以在函数返回前,覆盖SEH链表来获取进程的执行权限。
常见的windows保护机制绕过SafeSEHSafeSEH是针对SHE异常处理的攻击缓解技术,使用(/SAFESEH)链接选项生成的可执行文件,会在头部包含一个记录所有有效异常处理函数的SafeSEHtable,当异常发生时ntdll.dll中的异常分发处理函数会验证堆栈上的ExceptionHandlerRecord指向SafeSEHtable中一个有效的异常处理函数。
如果异常分发处理函数检测出ExceptionHandlerRecord被攻击者改写并指向了其它地方,则会终止程序的运行。
绕过方法:
把SHE指向堆常见的windows保护机制绕过DEP&ASLRDEP绕过方法是通过构造ROP构造出可以执行的内存块。
ASLR的绕过:
找到没有开启ASLR的模块,使用其中的指令作为ROP。
这两个相辅相成,导致windows7以后的漏洞利用变得门槛较高。
结合起来的绕过方法:
堆喷到固定地址,并且该地址ROP后可以执行。
难度不低。
PWN习题有代表性又没有坑点的一道题:
Tip:
溢出漏洞Shellcode坏字符处理。
如何输入shellcode.比较好。
第5部分:
最后总结附属配附属配备p时刻清醒的头脑p和谐安静的团队p作战策略+规划p若干干粮+水果+零食uCTF比的不是智力,是比的不是智力,是脑力力uCTF比的不是新奇,是比的不是新奇,是经验uCTF比的不是猥比的不是猥琐,是思,是思维uCTF比的不是奇葩,是全局比的不是奇葩,是全局谢谢!