CTF基础知识byExpl0it2017-04内容提要第一块内容:CTF简介第二块内容:MISC第三块内容:WEB第四块内容:Reverse第五块内容:PWNCTF(CaptureTheflag)题目内容种类繁杂,覆盖面广难度高,考察全面。主要包括MISC,WEB,RE,PWN四个大类常规内容包含:程序逆向,漏洞挖掘,Web渗透,加密解密,数据隐藏,远程利用,各类编程等等比赛中出现核心题目,分数的风水岭:程序逆向,漏洞挖掘(包括web漏洞),远程利用MISC的考核内容,由于覆盖面大,谁都可以做,坑点较多第一部分:MISC首先了解一下CTF中会用哪些加密方式Base64最常见,也是最容易解开的。可以使用火狐的hackbar插件解密,由于base64加密算法的特殊,一般加密后的字符串会已‘=’或者‘==’结尾。栅栏密码把要加密的明文按几个分成一组,然后每一组的第一个字连起来,形成一段无规律的话。如有个ctf中出现的一道题目:一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏...tnc0afsiwalkes,hwit1rg,nptttessfu}uauhmqike{m,nhuiouosarwCniibecesnren首先了解一下CTF中会用哪些加密方式Unicode\u670b\u53cb\uff0c\u4f60\u542c\u8bf4\u8fc7\u5b89\u5229\u5417\uff1f\u000d\u000a在线解密:Brainfuck++++++++++[+++++++++++++++++++++-]++.+.+++++++..+++.++.+++++++++++++++..+++.------.--------.+..需要翻墙首先了解一下CTF中会用哪些加密方式摩尔斯电码由点和杠构成密文样例:-----.-.....在线解密地址:jsfuckorjother这种编码也可能在web题中出现。主要把javascript代码转化成()【】{}!+字符在线编码地址:信息搜索题比赛中的前几题,一般做为送分题出现。常规题目解密一下这份截获的密文吧!FAXXDDAGFFXGFDXGDDDGGAXFFA提示:密文解密的话先要知道加密的方法。解开:flagxidianctfASCII编码、Base64编码、Shellcode编码(hex编码)、MorseCode摩尔斯电码、Url编码。换位加密:ROT-5,ROT-13,给出的字符串相对真实的字符串的偏移。在线工具:常见编码常见题目给你一个文件(一般是图片)。告诉flag就在里面简单难度:nopad++普通难度:binwalk大法好深渊难度:就是脑洞题了。一题简单的图片题常见题目数据包分析也是MISC中常见的题目。一般是会给出一个黑客攻击的中捕获的数据包,进行分析。考察wireshare和网络分析的能力。出了数据包分析,日志分析也是MISC里面喜欢出的题目第二块:web工具准备Firefox(hackbar,firebug,tamperdata,UserAgentSwitcher)Burpsuite&fiddlePython…….常见套路花式玩弄php(各种php黑魔法,主要坑点)花式注入(注入反而是常规题)花式伪造(注意302跳转,修改请求头相应头X-Forwarded-For/X-Client-IP/X-Real-IP/CDN-Src-IP、花式改UA,花式藏FLAG)PHP黑魔法1if(isset($_GET['name'])andisset($_GET['password'])){if($_GET['name']==$_GET['password'])print'Yourpasswordcannotbeyourname.';elseif(Null===NULL)die('Flag:'.$flag);elseprint'Invalidpassword';}PHP黑魔法2if(isset($_GET['password'])){if(strcmp($_GET['password'],$flag)==0)die('Flag:'.$flag);elseprint'Invalidpassword';}PHP黑魔法3PHP黑魔法4240610708QNKCDZOPHP黑魔法5functionnoother_says_correct($number){$one=ord('1');$nine=ord('9');//Checkalltheinputcharacters!for($i=0;$istrlen($number);$i++){//Disallowallthedigits!$digit=ord($number{$i});if(($digit=$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生成输入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部分:最后总结•附属配备时刻清醒的头脑和谐安静的团队作战策略+规划若干干粮+水果+零食CTF比的不是智力,是脑力CTF比的不是新奇,是经验CTF比的不是猥琐,是思维CTF比的不是奇葩,是全局谢谢!