profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 6. 6. 16:52

MoM5m4g1c

c파일과 nc 서버가 주어졌다.

water 값을 바꿔서 gift.txt 파일을 읽도록 해야할 것이다.

gets 입력 시 bof가 발생하므로 water 값을 0 아닌 값으로 바꿔주면 된다.

 

 

익스플로잇

water값 앞 까지(125byte 만큼)를 더미로 채우고, water 값을 변경하면 system 함수가 실행될 것이다.

대회 서버가 닫혀서 플래그 샷은 찍지 못하였다.

 

 

k3Y

메인 함수

이 문제는 옛날에 pwnable.kr 에서 풀어본 문제와 상당히 유사하다.

rand() 를 통해 얻은 값을 v5에 저장한다.

key 를 입력받은 뒤 v4에 저장한다.

v5와 v4를 비트 연산한 결과값이 -1393689906 일 경우 system 함수를 통해 "cat flag" 를 실행시킨다.

 

rand() 함수의 경우 시드값을 설정해주지 않으면 항상 일정한 값을 생성하기에 rand() 결과 값과 -1393689906 값을 비트 연산한 것을 입력값으로 주면 될 것이다.

 

 

문제 해결 과정

rand() 함수 호출 직후 bp를 건다.

 

rax 값을 확인한다.

v5 : 0x6b8b4567

페이로드는 다음과 같을 것이다.

-1393689906^0x6b8b4567

 

 

익스플로잇

익스플로잇 코드

 

서버가 닫혀서 로컬에서 진행하였습니다!

 

 

Pr1ns0n_Br34k

메인 함수

언뜻 보기엔 복잡해보이는데, 우선 build_prison 함수를 살펴보자.

 

build_prinson 함수

앞에서 다섯 번 정도 정수를 입력받아 변수에 저장한다.

그리고 gets 입력 시 bof 가 터진다.

 

flag() 함수가 존재한다.

 

-> bof를 통해 ret를 flag() 함수 주소로 바꿔주면 될 듯 하다.

 

페이로드는 다음과 같을 것이다.

정수를 반복문을 통해 다섯 번 보내주고,

"dummy*168 + flag() 함수 주소"를 gets 입력시 보낸다.

 

 

익스플로잇

익스플로잇 코드

 

서버가 닫혀서 로컬에서 진행하였다.

 

'Hacking > CTF' 카테고리의 다른 글

[CTF] UMDCTF 2021 후기  (0) 2021.04.23
[CTF] UMDCTF 2021 writeup  (0) 2021.04.23
[CTF] HackPack CTF 2021 writeup  (0) 2021.04.22
복사했습니다!