入门材料现在还蛮多的,看书《从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
基础知识记录。用来查阅忘记的知识点的话,还是可以的,能够帮助回想起来。