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 값을 비트 연산한 것을 입력값으로 주면 될 것이다.
문제 해결 과정
v5 : 0x6b8b4567
페이로드는 다음과 같을 것이다.
-1393689906^0x6b8b4567
익스플로잇
Pr1ns0n_Br34k
언뜻 보기엔 복잡해보이는데, 우선 build_prison 함수를 살펴보자.
앞에서 다섯 번 정도 정수를 입력받아 변수에 저장한다.
그리고 gets 입력 시 bof 가 터진다.
-> 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 |