CTF[Pwn] i春秋学习笔记

buffer overflow

堆溢出、栈溢出、bss溢出、data溢出

例题:wellpwn\AliCtf 2016 vss\Hitcon 2015 readable\stkof\zerostorage

整数溢出

  • 无符号数和有符号的转换(MIMA 2016 shadow)
  • 整数加减乘除法,malloc(size*2)(pwnhbu.cn calc)
  • 整数溢出通常会进一步转换为缓冲区溢出、逻辑漏洞等其他漏洞

格式化字符串

  • printf sprintf fprintf 任意地址读写
  • 用来leak

释放后使用(Use-After-Free)

  • 释放掉的内存可能会被重新分配,释放后使用会导致重新分配的内存被旧的使用所改写
  • Double free就是一种特殊的UAF
  • 例题: Defcon 2014 Qual shitsco,AliCTF 2016 router,0CTF2016 freenote(double free),HCTF 2016 fheap(double free)

逻辑漏洞

  • 访问控制
  • 协议漏洞
  • 多线程竞态条件等(fakefuzz)

还原结构体、接口、类

理清程序的执行逻辑

熟悉常见的数据结构 链表、树、堆、图等各种加密算法



了解各个寄存器的作用

rsp/esp pc rbp/ebp rax/eax rdi rsi rdx rcx

栈用于保存函数的调用信息和局部变量


函数调用:call,rer

调用约定:

__stdcall,__cdecl,__fastcall,__thiscall,__nakecall,__pasccal

参数传递:取决于调用约定,默认如下

  • X86从右向左入栈
  • X64优先寄存器,参数过多才入栈

函数调用的过程

call func: push pc,jmp func

Leave : mov esp,ebp ,pop ebp

Ret :pop pc

栈溢出的保护机制

栈上的数据无法被当成指令来执行

  • 数据执行保护(NX/DEP)
  • 绕过方法:ROP

让攻击者难以找到shellcode地址 #不知道返回地址

  • 地址空间布局随机化(ASLR)
  • 绕过方法: infolleak,ret2dlresolve,ROP

检测Stack Overflow

  • Stack Canary/Cookie(Cookie泄露)
  • 绕过方法 infoleak

栈溢出的利用方法

现代栈溢出的技术基础:ROP(绕过NX和ASLR)

利用signal机制的ROP技术:SROP

没有binary怎么办: BROP(不是很常见)

劫持栈指针 :stack pivot #将栈指针劫持到其他区域

利用动态链接绕过ASLR:ret2dlresolve、fake linkmap

利用地址低12bit绕过ASLR:Partial Overwrite(低12位不会被随机化)

绕过Stack canary:改写指针与局部白能量、leak canary、overwrite canary

溢出位数不够怎么办:覆盖ebp,Partial Overwrite

现代栈溢出的利用技术ROP 代码复用技术

google关键字 Ret2libc,ROP

CTF中ROP常规套路

  • 第一次触发漏洞,通过ROP泄露libc的address(如puts_got),计算system地址 然后返回到一个可以重现触发漏洞的地方(main)再次触发漏洞。通过ROP调用system(‘/bin/sh’)
  • 直接execve(“/bin/sh”,[“/bin/sh”],NULL) 这个通常在静态链接比较常用

例题:Defcon 2015 Qual:R0pbaby AliCTF 2016:vss PlaidCTF  2013:ropasaurusrex

转载于:https://www.cnblogs.com/rookieDanny/p/8593266.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值