[关闭]
@expl0r3r 2018-05-18T12:56:31.000000Z 字数 857 阅读 1581

PWN入门

pwn介绍

  • CTF pwn中的目标是拿到flag,一般是在linux平台下通过二进制/系统调用等方式编写漏洞利用脚本exp来获取对方服务器的shell,然后get到flag


前置技能:

  • 汇编语言,函数调用约定,大小端,函数栈帧

  • python语言,gdb调试,IDA pro分析

  • linux相关:32位与64位,各类防护机制(NX,ASLR,Canary,Relro),ELF文件格式,系统调用,shell命令

  • 编译,链接,装载,执行

常见漏洞简介

  • 缓冲区溢出(Buffer overflow)
    • 栈溢出,堆溢出,bss溢出等
  • 整数溢出(Integer overflow)
    • 整数的加减乘法
    • 有符号与无符号的转换
    • 整数溢出一般可以转换成其它漏洞
  • 格式化字符串(Format string)
    • printf(s),sprint f(s),fprintf(s)可以修改地址
    • 也可以用来leak信息
  • 使用后释放(Use-after-free)
    • 释放掉的内存可能会被重新分配,释放后使用会导致重新分配的内存被旧的使用所改写
    • Double free是一种特殊的UAF

工具

  • IDA pro
  • gdb
  • pwntools zio
  • peda
  • readelf
  • ropgadget
  • string
  • objdump
  • ......


利用方法

  • 注入代码
    • 溢出后在栈上执行代码
  • 伪造函数
    • 修改.got.plt地址,替换掉正常函数
    • 布置gadget将ret地址指向libc中的其它函数
  • ......

学习网站:

Linux (x86) Exploit Development Series – sploitF-U-N(中文版:SploitFun Linux x86 Exploit 开发系列教程

大杂烩指南

如何开始你的CTF之旅

PWN总结

p4-team

uaf

ddaa

二进制漏洞学习

sploitfun

CTF Writeup Github(Note:百度搜不到github Pages的)

各类博客

pwnable.kr

pwnable.tw

ROPemporium

学习资料:

《有趣的二进制》
《深入理解计算机系统》
《程序员的自我修养》
《深入理解Linux内核》

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注