SWPUCTF 2021 新生赛_whitegive_pwn
123456[*] '/mnt/e/work/PWN/nssctf/391_[SWPUCTF 2021 新生赛]whitegive_pwn/pwn' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)
ida64123456__int64 vuln(){ char v1[16]; // [rsp+0h] [rbp-10h] BYREF return gets(v1);}
1234int gift(){ return puts("Welcom new to NSS");}
利用溢出转到elf.plt['puts']和elf.got['put']计算出libc_base地址
由于是64位 需要rdi的地址
ROPgadget --binary ...
pwn-note(form brokenpoems)
pwn-notegcc 编译的指令
NX:-z execstack / -z noexecstack (关闭 / 开启)
Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启)
PIE:-no-pie / -pie (关闭 / 开启)
RELRO:-z norelro / -z lazy / -z now (关闭 / 部分开启 / 完全开启)
plt gotplt 是寻址用的->作用就是去 got 表寻找最后调用 libc 中的函数got 可以理解为一个函数指针列表 函数一开始没调用时不是指向libc 指向一段init汇编
recvinteractive() : 在取得shell之后使用,直接进行交互,相当于回到shell的模式。
recv(numb=字节大小, timeout=default) : 接收指定字节数 ...