D0g3_17

Pwn 入门指南
CTF Pwn入门定义:”Pwn”是一个黑客语法的俚语词 ,是指攻破设备或者系统。发音类似“砰”,对黑客而言,这就...
扫描右侧二维码阅读全文
26
2018/09

Pwn 入门指南

CTF Pwn入门

定义:

”Pwn”是一个黑客语法的俚语词 ,是指攻破设备或者系统。发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——砰的一声,被“黑”的电脑或手机就被你操纵了。

Pwn是属于软件安全的范畴,CTF中的Pwn题目的目的一般最后都是需要getshell,拿到服务器目录下的flag

必备知识

1.汇编语言基础(熟悉大多数寄存器,操作码,编写简单的汇编程序)
2.函数的调用过程(汇编级别上的,尤其是栈帧这个概念,需要熟记)
3.C语言基础
4.ELF、pe文件格式分析(都是COFF可执行文件的变种)

CTF中的Pwn

CTF中的Pwn题目主要是栈溢出、格式化字符串和堆的利用。栈溢出和格式化字符串相对简单,掌握了一些基础和一些绕过技巧之后,利用的思路还是相对固定的。堆的利用比较复杂,纯粹为了入门可以先把堆这块知识放一放。

Pwn的学习方法

都说Pwn入门难,但是其实没有想象中的那么难,只是需要掌握的基础知识比较多。觉得没啥linux基础的可以先刷刷pwnable.kr

1.多刷题,多看WriteUp
2.多刷题,多看WriteUp
3.多刷题,多看WriteUp

程序的保护机制

了解程序安全的防护才能确定出绕过他的方法。CTF中的Pwn题考察到的知识点大多都是如何绕过程序的保护最终拿到flag的过程。

1.RELRO

设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号,从而减少对GOT(Global Offset Table)攻击。RELRO为” Partial RELRO”,说明我们对GOT表具有写权限。

2.PIE(ASLR)

ASLR,全称为 Address Space Layout Randomization,地址空间布局随机化。ASLR 技术在 2005 年的 kernel 2.6.12 中被引入到 Linux 系统,它将进程的某些内存空间地址进行随机化来增大入侵者预测目的地址的难度,从而降低进程被成功入侵的风险。当前 Linux、Windows 等主流操作系统都已经采用该项技术。

3.canary

栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正源回的时候会验证 cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将 cookie信息给覆盖掉导致栈保护检查失败而阻止 shellcode的执行。 在Linux中我们将cookie信息称为 canary

4.NX(DEP)

栈不可执行保护,将汇编代码注入到栈上时,并不会执行汇编语句,缓解了受攻击的可能性。

学习资源

必备知识

视频学习网站:

蓝鲸安全-Pwn快速入门
极力推荐这套课程!虽然上面只讲到了栈溢出和格式化字符串,但是大多的利用和绕过的知识点都覆盖到了。

书籍:

1.《程序员的自我修养》
里面的程序的基本执行流程、符号解析、重定向、动态链接都讲的特别详细,对我们了解程序的执行流程有很多的帮助。

2.《深入理解计算机系统》
3.《0day安全软件漏洞分析技术(第二版)》

刷题练习的地方

1.pwnable.kr
2.pwnable.tw
3.Jarvis Oj

ctf-wiki

https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/stack_intro/

未完待续,如有疑问或建议请留言或在群内提问

Last modification:September 26th, 2018 at 11:13 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment