반응형

CTF/포너블 18

[EZCTF] Save peach! - 포너블 / Pyjail

어려움으로 분류된 포너블 문제였으나 대회 특성상(EZ) 그렇게 어렵지는 않은 문제였다. 포너블 문제가 전부 슈퍼마리오와 연관된 내용으로 구성되어 있었는데 첫번째가 파이프라인을 이용한 문제였다면 이번 문제는 Jail Escape 와 관련된 문제이다. 문제 설명에 Help her break out the python is near! 이라고 적혀있는걸 보니 python jail escape 문제인듯 하다. 별다른 바이너리 파일이나 소스코드 없이 원격 접속 주소만 제공이 되고 있다. nc 명령어를 이용해 위처럼 접속을 할 수 있다. 시험삼아서 hi 라고 입력해봤는데 아무런 응답 없이 >>> 표시만 출력되었다. 참고로 >>> 표시는 파이썬 쉘에서 자주 사용하는 프롬포터이다. 일단 해당 서버 내에 파이썬이 돌아가고..

CTF/포너블 2022.05.25

[EZCTF] Mario bros! - 포너블 / Bash / Pipe

이번 대회는 대회 이름(EZCTF) 처럼 아주 쉬운 문제들로 구성된 대회였다. 그중 가장 쉬웠던 포너블 문제 슈퍼마리오 컨셉으로 만들어진 문제였다. 바이너리 파일은 따로 주어지지 않고 서버에 원격 접속할 수 있는 주소와 포트만 주어져 있다. 리눅스 환경에서 nc 명령어를 이용해서 원격 접속을 할 수 있다. 원격으로 접속하면 Are you root? 라고 물어보는데 시험삼아 yes 라고 입력했더니 내가 입력한 yes를 그대로 다시 echo 해주고, lol ur not root! 라는 문자열을 출력시킨다. 어떻게 풀어야 하나 고민하다가, 문제 제목을 보고 느낌이 팍 왔다. 슈퍼마리오를 한번이라도 플레이해본 사람은 이게 뭔지 알거다. 슈퍼마리오가 맵을 이동할 때 쓰는 파이프인데, 리눅스에서도 똑같이 파이프가 ..

CTF/포너블 2022.05.16

[DwagCTF] bof to the top - 포너블 / 버퍼오버플로우 / Pwntool / gdb

대회가 끝나고 나서 풀어본 버퍼오버플로우 문제 쪼금 생각해야하는 부분이 있어서 마냥 간단하지만은 않았다. bof 라는 이름의 바이너리 파일과 이 파일의 소스코드가 주어진다. 해당 파일은 ELF 파일로 리눅스에서 실행 가능한 프로그램이다. 리눅스의 EXE 파일이라고 생각하면 된다. 프로그램을 실행시켜보면 사용자의 입력을 두번 받는다. 맨 처음 이름을 물어보고, 어떤 노래를 부를건지 물어보는데 각각 hello, world 라도 입력해봤다. 입력했더니 프로그램은 아무런 출력도 없이 종료된다. #include "stdio.h" #include "string.h" #include "stdlib.h" // gcc -m32 -fno-stack-protector -no-pie bof.c -o bof void audit..

CTF/포너블 2022.04.17

[DwagCTF] Tom Nook the Capitalist Racoon - 포너블 / Pwntool

포너블 문제 대회가 끝나고 풀어서 캡쳐가 조금 미흡하다. 해당 문제가 포너블로 분류되어있긴 했는데, 포너블이라고 보기엔 좀.. 이 문제는 동물의 숲 게임을 모티브로 해서 만들어진 문제이다. 참고로 문제 제목에 나오는 Tom Nook은 동숲에서 대출해주는 너굴이다. animal_crossing 이라는 ELF 파일이 하나 주어진다. ELF파일은 리눅스에서 실행가능한 파일로 리눅스의 EXE파일이라고 생각하면 된다. 해당 파일을 실행시키면 이런 문자들이 출력된다. 동물의 숲을 간단하게 커맨드 라인으로 구성한 프로그램인듯 하다. 1, 2, 3을 입력해서 각 메뉴를 선택할 수 있다. 1을 입력해서 물건 팔기로 들어가본다. 그럼 내가 가지고있는 물건들을 팔 수 있다. 하나 팔면 800 ~ 900 벨 정도를 벌 수있나..

CTF/포너블 2022.04.16

[TGHACK] Boofy - 포너블 / 버퍼오버플로우

이번 문제는 대회 끝나고 풀어서 제대로 된 캡쳐를 하지 못했다. 간단한 포너블 문제이다. boofy 라는 바이너리 파일과 해당 파일의 소스코드가 주어진다. boofy는 ELF파일로 리눅스에서 실행가능한 프로그램이다. 리눅스의 EXE파일이라고 생각하면 된다. 프로그램을 먼저 실행시켜 보자. 프로그램을 실행시키면 Please enter the password? 라고하면서 비밀번호를 물어본다. abcd 라고 입력해봤는데, 당연히 올바른 비밀번호가 아니기 때문에 Sorry, but that's not the right password... 라는 문구가 출력된다. #include #include #include void get_flag() { printf("TG20{the real flag is on the se..

CTF/포너블 2022.04.15

[Space Heroes CTF] Guardians of the Galaxy - 포너블 / 포맷스트링

이번 대회에서 중급 난이도로 분류되었던 포너블 문제이다. 가디언즈 오브 갤럭시 컨셉의 문제였다. 문제 설명에서 Can Starlord find a successful distraction format? 이라고 언급하면서 이 문제가 Format String 취약점을 이용해서 푸는 문제라는걸 암시하고 있다. 문제를 직접적으로 풀어볼 수 있는 주소(0.cloud.chals.io) 와 포트(12690)이 주어지고, 로컬에서 테스트해 볼 수 있도록 guardians 라는 바이너리 파일도 같이 주어진다. 일단 먼저 문제 서버에 접속해본다. nc(netcat) 명령어를 이용해서 위와 같이 접속할 수 있다. netcat은 네트워크를 연결해서 데이터를 읽고쓸수 있게 해주는 도구이다. nc 0.cloud.chals.io ..

CTF/포너블 2022.04.08

[angstromCTF] No canary - 포너블 / 버퍼오버플로우

No canary 문제는 이번 대회에서 나온 가장 쉬운 포너블(pwnable) 문제였다. 대회가 끝나고 풀어서 문제 설명은 캡쳐를 못했다..ㅎ pwnable 이란 시스템 해킹 분야를 말한다. 어떤 프로그램의 취약점을 통해 운영체제의 권한까지 획득하는 그런 종류의 분야이다. 문제 이름이 No canary 인것도 포너블과 관계가 있다. 포너블에 자주 등장하는것이 '버퍼 오버플로우' 라고하는 취약점인데, 프로그램에서 사용자 입력값의 길이를 검증하지 않아서 발생하는 취약점이다. 버퍼 오버플로우를 설명할 때 가장 많이 쓰는 그림이다. 프로그램에서 사용자의 입력값을 받으면 buffer 라는 영역에 저장된다. 당연히 buffer 영역을 넘어가면 저장이 되지 않도록 입력값의 길이를 검증해야하는데, 버퍼오버플로우는 길이..

CTF/포너블 2022.03.19

[zer0ptsCTF] easy strcmp - 포너블 / ltrace

chall 이라는 이름의 바이너리 파일이 하나 주어진다. 해당 파일은 리눅스에서 실행 가능한 elf 파일이다. 리눅스 환경으로 옮겨서 chmod 777 등의 방법으로 실행권한을 부여한 뒤 ./chall 이런식으로 실행시키면 된다. 실행시켜봤더니 ./chall 라고 사용법이 나온다. a를 입력해 봤더니 Wrong! 이라고 나오는걸 보아 완전한 플래그를 맞게 입력해야 되는듯 하다. 해당 파일을 IDA로 열어보면 위와같은 부분을 발견할 수 있다. strcmp 함수를 이용해서 "zer0pts{****CENSORED****}" 값과 입력값을 비교한 뒤 모든 글자가 맞으면 Correct! 틀리면 Wrong! 을 출력한다. 이 문제는 ltrace라는 도구를 이용하면 쉽게 풀 수 있다. 위키백과에는 ltrace가 이렇..

CTF/포너블 2022.03.05
반응형