入门材料现在还蛮多的,看书《从0到1 CTFer成长之路》《CTF特训营》,网站ctfwiki都可以,但是我还是安利一下我觉得很好的入门视频
链接:https://www.youtube.com/watch?v=8zO47WDUdIk
真的从0开始教,适合我这样的小白入门,这里粘一下他slide里的知识点
useful tools






Binary Format

x64 Calling Convention


https://www.ired.team/miscellaneous-reversing-forensics/windows-kernel-internals/linux-x64-calling-convention-stack-frame
Stack Frame

Function Prologure



Function Epilogue



leave = mov rsp, rbp & pop rbp
Buffer Overflow利用
Return To Text

覆盖return addr
Return To Shellcode


Linux syscalls: https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md
Protection
Stack Guard


穿插一句,canary的值可以通过 pwngdb插件的
tls命令获得
DEP


ASLR & PIE




GOT Hijacking

Lazy Binding

GOT


Lazy Binding Proceduce

第一次调用<puts@plt>表,会将puts的真实地址写到GOT表里

第二次调用<puts@plt>表时,就直接拿到puts的真实地址了。
热知识:C语言里printf如果带
\n,汇编里实际是调用puts
GOT Hijacking


RELRO

ROP



Return to PLT



Return to libc






- https://github.com/niklasb/libc-database
- https://github.com/lieanu/LibcSearcher
summary
基础知识记录。用来查阅忘记的知识点的话,还是可以的,能够帮助回想起来。


