#
漏洞利用
(1)利用程序本身存在的漏洞获取程序的控制权
> 本地利用 > 远程利用
(2)CTF中称为pwn
> 做题中大多都是给你一段不长的代码,让你分析其中的漏洞点在哪,然后利用自己写的脚本利用漏洞,达到自己所要的目的。
? 现实中的pwn和CTF中的pwn是有关联的,CTF中的pwn经常是由现实中一些较复杂的pwn中抽取一部分,然后来进行分析j解题,经过CTF的训练后,可以尝试去解决实际中的一些pwn问题。
(3)有用的工具
> IDA
> Gdb
> Pwntools
> Qira
> Objdump
(4)Buffer Oveflow
> 因为程序本身没有正确检查输入数据的大小,造成攻击者可以输入比buffe还要大的数据,使得超出部分覆盖程序的其他部分,影响程序执行。
> 栈溢出 专指发生在栈上的溢出
> 需要进行的操作:覆盖返回地址和控制参数
> 不管是什么漏洞,如果能重新找出stack overlow,之后就是标准动作了。
(5)可以做什么
> 控制程序的执行,做出非预期的行为
> Control-Flow Hijack
> Return Oriented Programming
> 执行Shellcode
(6)关键点
> 覆盖返回地址
> 知道溢出点在哪 输入刚好输多少位才能覆盖返回地址
> 找偏移
> 拿到系统的shell就相当于拿到了系统的权限
(7)解题办法
> 1:计算offset,利用qira输入大量的值,当报错时,去查看esp堆栈中地址,采用数的方法看第一个输入一共偏移多少才能到达返回地址;
> 2:赋值,自己去写shellcode
(8)学习的知识
> C语言/汇编
> 计算机组成原理(深入理解计算机系统)
> 漏洞战争
> 0day安全
(9)刷题网址
> http://pwnable.kr/
> http://pwnable.tw/