社交媒体

pwn入门1 - x86(_64)用户态

题源:https://ctf-wiki.org/pwn

栈溢出

ret2text / ret2shellcode 略

ROP

工具: ROPgadget

原理

在 NX 栈保护的情况下自定义数据和控制程序运行流

ret2syscall

利用 gadget 控制寄存器值,构造系统调用 execve("/bin/sh",NULL,NULL)

ret2libc

利用 gadget 控制运行流,执行 libc 函数 system("/bin/sh")

system() ?

  • 直接走 plt 表

  • 利用泄露 libc 函数地址(__libc_start_main)+固定函数地址差值

"/bin/sh"

  • 已存在字符串( libc 中也包含)

  • 调用 get 填入变量

Trick

多轮利用,获取信息+最后利用(靠运行时ASLR不重新变化)

堆利用

格式化字符串漏洞

整数溢出

更像是为后续exp铺垫(?

条件竞争