ASIS-2017-PWN-Start-Record
1. 检查安全性 pwn checksec {file} 没有 canary 和 NX 爽的飞起 2. 确定溢出位置 gdb 调试环境影响 buf 在内存的位置, 所以要根据 core dump 来看buf地址。 ulimit -c unlimited sudo sh -c 'echo "/tmp/core.%t" > /proc/sys/kernel/core_pattern' pwn cyclic -n 8 200 gdb {file} core # -> crash_addr pwn cyclic -n 8 -l {crash_addr} # -> x:('a' * x + {ret_addr}) 3. pwntools 脚本走起 直接栈上 shellcode 居然跪了,显然服务器端开启了ASLR 4. Bypass ASLR * 程序没有调用 system 函数, 没法使用 system_plt 来调用真实地址 * 程序没有用 write 函数不知道该怎么把 base addr 泄露回来 5. Read writeup http://look3little.blogspot.com/2017/04/writeupasis2017-start-89-pwn-warmup.html * bss 地址是固定的 * bss 区是可执行的 所以思路就是把shellcode写到bss中, 然后rop执行之。 获取 bss 地址的方法: * objdump -h {file} * pwntools: elf.bss() 6. ROP x64 寄存器传参, RDI,RSI, RDX, RCX, ... R...