CTF

    [2023 JBU CTF] h0f write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 write-up이다. 🧐 문제 문제명 : h0f 힙 오버플로우가 발생하여 다른 chunk의 값을 덮을 수 있다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 플래그를 획득할 수 있다. 🧐 풀이 기법 출제자는 unsafe unlink를 통해 플래그를 얻었다. 하지만, 다른 힙 기법으로도 문제를 풀이할 수도 있다. 해당 write up은 **unsafe unlink** 기법을 기준으로 작성한다. 🧐 분석 위와 같은 보호 기법이 걸려있다. 바이너리를 분석해보자. 🧐 main 함수 분석 main함수 이다. buf를 통해 메뉴를 입력받고, 메뉴에 맞는 함수가 호출된다..

    [2023 JBU CTF] uaf_basic write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 write-up이다. 🧐 문제 문제명 : uaf_basic Use After Free 기법을 이해하고, 이를 통해 함수를 호출하여 플래그를 얻는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 플래그를 획득할 수 있다. 해당 문제는 구조체의 이해를 위해 C 소스파일을 제공한다. 🧐 정적 분석 보호 기법은 위와 같다. 문제에서 주어진 C 소스파일을 분석해보자. uaf_basic.c // Name: uaf_basic.c // Compile: gcc -o uaf_basic uaf_basic.c -no-pie #include #include #include ..

    [2023 JBU CTF] call_func write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 write-up이다. 😭 이 문제도 Csu Gadget을 이용하는 것이 목적인데, 해당 함수에서 검증 로직 이후 fopen을 해서, 해당 주소로 RET해주면 풀리게 된다... fopen을 앞에 해주고 인자 검증을 했어야 했는데.. ㅎㅎ 🧐 문제 문제명 : call_func RTC 기법을 이해하고, 각 레지스터 값을 설정하고 함수를 호출하여 플래그를 얻는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 플래그를 획득할 수 있다. 🧐 분석 보호 기법은 위와 같다. 문제 바이너리를 분석해보자. main함수이다. scanf에서 bof가 발생한다. win함수 ..

    [2023 JBU CTF] format64 write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 write-up이다. 🧐 문제 문제명 : format64 64bit 환경에서 format string bug로 포인터를 overwrite하여 셸을 획득하는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 셸을 획득할 수 있다. 🧐 분석 보호 기법은 위와 같다. 문제 바이너리를 분석해보자. main함수이다. buf에 값을 256byte 입력받고, 이를 출력할 때 format string bug가 발생한다. check전역변수의 값이 0x87654321ABCD이면 win함수를 호출한다. win함수로 들어오면 exit(0);가 실행되면서 프로그램이 종료된다...

    [2023 JBU CTF] format32 write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 write-up이다. 🧐 문제 문제명 : format32 32bit 환경에서 format string bug로 포인터를 overwrite하여 get_shell함수를 호출하는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 셸을 획득할 수 있다. 🧐 분석 보호 기법은 위와 같다. 문제 바이너리를 분석해보자. main함수이다. buf에 값을 256byte 입력받고, 이를 출력할 때 format string bug가 발생한다. funcPtr포인터에 win함수 주소를 저장하고, check전역변수의 값이 0xdeadbeef이면 funcPtr에 들어간 함수를 호..

    [2023 JBU CTF] double canary write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 내가 출제한 문제에 대한 write-up이다. 😭 v6에 r_rum 값을 왜 넣어줬지..? 그래서 그냥 Canary Leak 문제가 되어 버렸다 ㅎ.ㅎ 😭 더 웃기고 슬픈건, 나는 인지하지 못한 채로 라업을 작성했다... 그럴 수 있지 없다. 🧐 문제 문제명 : double canary Canary 보호기법이 걸려있어서 Canary 값을 우회하여 익스플로잇하는 문제이다. bof가 발생하고, printf함수 주소를 출력해주므로, LibcBase를 얻어서 원하는 함수를 호출하여 system함수를 호출하여 셸을 얻는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 셸을 획득할..

    [2023 JBU CTF] babybof write-up

    분야 : Pwnable 💡 2023 JBU CTF에서 출제한 문제에 대한 Write up 이다! 🧐 문제 문제명 : babybof bof가 발생함을 인지하고, xor 연산 값에 맞춰 페이로드를 구성하여 익스플로잇하는 문제이다. 위 구성이 문제파일로 제공된다. 로컬에서 도커 컨테이너를 올려 익스플로잇을 진행하고, 동일한 페이로드를 서버에 전송하면 실제 문제 플래그를 획득할 수 있다. 🧐 분석 babybof 바이너리를 분석해보자. 먼저, 메모리 보호기법은 NX bit가 걸려있고, Canary와 PIE가 걸려있지 않다. 바이너리를 디컴파일하여 코드를 분석한다. 먼저, get_flag함수가 있다. 해당 함수를 호출하면 /home/RET/flag를 읽어서 출력해주기 때문에 flag를 획득할 수 있다. main함수..