부족하지만 HackPack에서 진행한 CTF를 참여한 후, 문제를 정리해보았습니다.
HackPack CTF
An educational CTF that aims to complement security courses at North Carolina State University
ctf2021.hackpack.club
pwn, reverse, web, misc의 문제 구성으로 짜여있었으며 저는 web과 reverse문제를 풀었으며, pwn은 대회가 끝난 후 팀원이 먼저 풀었던 문제를 재구성하여 풀어보았습니다.
pwnable
기초 pwn문제로 system함수를 이용하여 권한을 획득하는 형식입니다.
hint를 보게 되면 디버깅을 하라고 되어있기에 chal파일을 디버깅해보겠습니다.
디버깅을 하면 위와 같은 코드를 볼 수 있는데 두 개의 Variable을 받아 sprintf함수를 통해 output_buff에 해당 실행문을 저장하는 것을 확인할 수 있습니다.
output_buff를 통해 system함수를 호출하므로 python명령을 실행할 때 위의 코드를 조금 활용하면 될 것으로 보입니다.
문자 두 개를 입력받기에 처음 오는 문자열은 python명령을 끝내주도록 괄호를 닫아주는 역할과 원하는 명령을 넣은 후 다시 괄호를 열어주어 두 번째 문자열과 합쳐져 python명령이 제대로 수행되도록 만들 수 있습니다.
그렇기에 첫 번째 Variable one을 입력받을 때 )';cat flag;'(로 입력받은 후, 두 번째 Variable two에서는 dummy값을 넣어 주면 될 것으로 파악됩니다.
그렇게 되면 최종적으로 output_buff에는 python -c 'print()';cat flag;'(+ dummy)가 들어갈 것으로 flag가 출력될 것입니다.
reverse
reverse문제로 암호와 관련되어 해독하는 문제입니다.
해당 문제 파일을 다운로드하여 디버깅을 해보면 아래와 같이 이상한 문자들로 나오게 됩니다.
해당 문자는 자바스크립트 성질을 이용하여 XSS 공격 벡터로 이용하기도 하는 JSFuck와 비슷한 구조를 가졌는데 찾아보니 BrainFuck이라 하는 프로그래밍이었습니다.
문제도 BF로 BrainFuck을 나타내는 것이었고, decoder를 통해 brain_blast라는 flag를 획득할 수 있었습니다.
web
web문제로 파일 업로드 취약점을 이용한 문제였습니다.
해당 url로 이동하면 아래와 같은 페이지로 이동하여 파일을 선택하여 이미지 파일을 업로드할 수 있도록 되어 있었습니다.
파일을 이미지만 업로드할 수 있기에 php 파일의 파일 시그니처를 이미지 파일 시그니처로 변경하여 업로드를 시도하여 보았지만 실패하였었습니다.
그렇기에 캡처를 아무거나 뜬 것을 hex editor를 활용하여 파일 뒷부분에 php쉘 코드를 삽입하여 flag를 확인할 수 있도록 활용하였었습니다.
다른 방법도 존재하였는데 이미지가 업로드되는 곳을 burp suite로 확인하여 해당 디렉터리로 이동한 후, 특정 매개변수를 이용하여 flag를 출력하는 방법도 존재하였습니다.
이상으로 제가 참여해본 HackPack CTF에서 풀어본 문제들을 정리해보았습니다.
대회 기간과 시험기간이 겹쳐 대회에서는 두 문제를 풀어보았고, 대회가 끝난 뒤 pwnable 한 문제를 풀어보았습니다. 시험으로 많은 문제를 풀지 못하였고, 아직 어렵다고 느껴지는 문제가 많기에 더 많은 공부가 필요하다고 느낀 대회였습니다.
더욱 노력하여 더 많은 발전을 할 수 있도록 공부를 해야겠다고 느껴졌습니다.
감사합니다.
'TeamH4C_ProjectH4C > CTF' 카테고리의 다른 글
[TeamH4C_CTF] UMDCTF2021 write-up (0) | 2021.04.25 |
---|