반응형

워게임/CTFlearn 103

[CTFlearn] Domain name resolver - 포너블 / Command Injection / IDA

CTFlearn 에서 제공하는 Easy 난이도의 포너블 문제 문제에서는 원격으로 접속할 수 있는 주소와 문제 바이너리 파일이 주어진다. 설명을 보면 도메인과 IP와 관련된 문제인듯 하다. 문제에서는 task 라는 바이너리가 주어진다. 해당 바이너리를 IDA 라는 도구를 이용해 열어봤다. F5를 눌러 메인함수의 수도코드를 보면 첫째로 사용자로부터 입력을 받는다. 입력받는 값은 도메인 네임이다. 다음으로 입력받은 값을 dig +short 형태로 명령어를 수행하고, 그 결과를 출력한다. 참고로 dig 명령어는 이렇게 도메인 이름을 입력하면 그 도메인의 아이피를 리턴해주는 명령어이다. 저 명령어를 그대로 task 바이너리를 이용해 수행하는 것이다. 실제로 원격으로 접속해 실행해보면 똑같은 결과가 리턴되는것을 확..

워게임/CTFlearn 2023.09.09

[CTFlearn] Leak me - 포너블 / 포맷스트링

CTFlearn에서 제공하는 Easy 난이도의 포너블 문제 문제설명에 format tag 라고 적혀있는걸 보니 포맷 스트링과 관련된 문제이다. 얼마전에 Root Me에 나온 문제와 그냥 동일한 문제이다. (https://hackingstudypad.tistory.com/613) 문제는 서버 주소와 소스코드가 주어진다. 위는 소스코드 내용인데 ./flag.txt 파일의 내용을 읽은 뒤 *f 에 저장한다. 그런다음 fgets 로 buffer 에 해당 값을 담아준 뒤 printf 로 사용자로부터 입력받은 값을 출력해준다. printf 부분에서 문제가 발생할 수 있다. 사용자에게 입력을 받아 결과를 출력할 때 포맷 스트링이라는 것을 사용하는데 기호로 다음과 같이 표시된다. %d : 정수형 10진수 상수 %f :..

워게임/CTFlearn 2023.09.07

[CTFlearn] Accumulator - 포너블 / C / 정수 오버플로우

간단하게 해결할 수 있는 포너블 문제 풀이수가 작은건 뒤쪽에 있어서 사람들이 많이 시도하지 않아 그런것 같다. 문제에선 원격으로 접속할 수 있는 주소와 task.c 라는 소스코드가 주어진다. 소스코드의 내용을 보면 int형인 acc 변수를 선언하고 while 내에서 사용자의 입력을 받아 입력한 값을 계속 더해 acc에 저장하는 코드이다. acc 가 양수인 경우 계속 while 문이 진행되고, 그게 아닐 경우 You win! 과 함께 플래그가 출력된다. 뭔가를 계속 더하는데 더한 결과 값이 음수가 되게 만들어야 한다는 뜻이다. 밑에 있는 조건문 때문에 입력값에 음수를 줄 수는 없는 상황이다. 한번 실행시켜 봤다. 1, 2, 3을 차례로 입력해봤든네 acc에는 1, 3, 6 이 저장되는 것을 볼 수 있다. ..

워게임/CTFlearn 2023.09.05

[CTFlearn] Finish The Flag - 리버싱 / IDA / XOR

CTFlearn에서 제공하는 Easy 난이도의 리버싱 문제 문제 설명을 보면 이상한 문서를 받았는데 매트릭스 바코드가 안에 들었있었다고 무슨 내용인지 알아봐 달라고 한다. 이렇게 세 개의 파일이 주어지는데 문제 풀때는 qr.png 파일만 사용하면 된다. qr.png 파일은 이렇게 생겼다. 조금 사이즈가 큰 QR코드이다. 해당 파일을 온라인 QR코듯 스캐너(https://www.online-qr-scanner.com/) 에 넣으면 뭔가 BASE64로 인코딩된듯한 데이터가 나온다. CyberChef(https://gchq.github.io/CyberChef)에서 해당 데이터를 base64 디코딩 해주면 맨 앞이 ELF 로 시작하는 데이터가 나온다. 이건 리눅스에서 실행 가능한 ELF 파일이라는 뜻이다. 해당..

워게임/CTFlearn 2023.09.03

[CTFlearn] Read in Color - 프로그래밍 / Zsteg

CTFlearn 에서 제공되는 프로그래밍 문제 프로그래밍 문제인데 프로그래밍 안하고 풀어버렸다. 문제 설명에 힌트가 써있다. Python 의 Pillow 라이브러리가 도움이 될것이라고 알려준다. PIL을 사용하는 문제는 이전에도 많이 다뤄서 아마 비슷한 유형을 것이다. (https://hackingstudypad.tistory.com/588) 이게 문제에서 주어지는 이미지다. 6개의 색깔이 있는 블럭이 보이는데 아마 PIL 라이브러리로 각 픽셀의 RGB 값을 뽑은 뒤, 그 값을 ASCII 코드로 바꾸면 플래그가 나올 것이다. 전형적인 문제 유형이다. 조금 다른 방법으로 시도해봤다. zsteg 라는 도구가 있는데 png 파일과 관련해 스테가노그래피 문제를 풀 때 사용하는 도구이다. 앞에 -a 옵션을 줘서 ..

워게임/CTFlearn 2023.09.01

[CTFlearn] ShahOfGimli - 포렌식 / HxD / Binwalk / AES

CTFlearn에서 제공하는 포렌식 문제 이번엔 이미지 파일과 암호에 관련된 문제이다. 요게 문제에서 주어지는 이미지이다. 반지의 제왕에 나오는 김리이다. HxD로 해당 파일을 열어보니 열자마자 Base64 인코딩된 데이터가 엄청나게 보인다. CyberChef() 에서 디코딩을 해보니 뭔가 Readme 처럼 보이는 내용이 나왔다. 이번 문제는 RubberDuck, Snowboard, PikesPeak, GandalfTheWise 와 같은 문제들을 풀고오면 좋다고 한다. 물론 블로그에서 이미 다 풀이했던 문제들이다. (RuuberDuck : https://hackingstudypad.tistory.com/266) (Snowboard : https://hackingstudypad.tistory.com/277..

워게임/CTFlearn 2023.08.26

[CTFlearn] Polycrypto - 암호학 / Python

CTFlearn에서 제공하는 Hard 난이도의 암호학 문제 다항식을 이용한 문제이다. 문제 파일이 제공되는 주소와 위키피디아 주소가 같이 적혀있다. 먼저 문제파일을 다운받아 열어보면 이런 내용이 적혀있다. 엄청나게 긴 다항식이 적혀있는게 보인다. 다음으로 위키피디아에 들어가보면 이런 내용이 적혀있다. 다항식을 binary로 표현하는 방법에 대해 안내한다. 영어랑 수식은 복잡해서 자세히 안읽었고 밑줄친 부분만으로도 충분히 풀 수 있을거 같아 바로 해보기로 했다. 핵심은 다항식에서 p^n 형태로 표현된 부분만 1로, 나머지 부분은 0으로 만들면 된다는 것이다. 우선 지수를 추출해야 했는데 귀찮아서 ChatGPT 한테 시켰다. 1초만에 바로 뽑아준다. ChatGPT가 뽑아준 지수에서 맨 끝에 0만 더 넣으면 ..

워게임/CTFlearn 2023.08.12

[CTFlearn] F1L3 M1X3R - MISC / Python / HxD

CTFlearn에서 제공하는 Hard 난이도의 MISC 문제 MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제 설명을 보면 어떤 사진이 MIXER 에 의해 뒤죽박죽이 되어서 잘 동작하지 않는다고 한다. 이 사진을 다시 복구해달라는게 문제의 요구사항이다. 문제에서 주어지는 파일은 fl4g.jpeg 파일이다. 해당 파일을 열어볼려고 하면 파일이 깨진듯 오류가 나면서 열 수가 없다. 해당 파일을 HxD로 열어보면 바로 뭔가 이상한걸 알아챌 수 있다. JPG 파일은 무조건 시작할때 FF D8 ~ 로 시작을 한다. 이런걸 파일 시그니처 라고 하는데 문제에서 같이 주어진 위키피디아 힌트 페이지에서도 확인할 수 있다. 자세히 보면 원래는 FF D8 FF E0 00 10 4..

워게임/CTFlearn 2023.08.07

[CTFlearn] The Adventures of Boris Ivanov Part 2 - 프로그래밍 / PIL

CTFlearn에서 제공하는 프로그래밍 카테고리의 Hard 난이도 문제 지난 Old memories 와 비슷한 문제이다. (https://hackingstudypad.tistory.com/584) 이번 문제 역시도 스테가노그래피와 관련이 있다. 문제 설명을 보면 중요한 정보가 담긴 종이가 찢어졌는데 이걸 복원해야 한다고 한다. 원본의 크기는 500*500 이라고 주어진다. 문제 파일을 열어보면 정말 사진을 세절기에 넣은것처럼 세로 1픽셀, 가로 500픽셀로 500 조각이 나있는 이미지를 볼 수 있다. 프로그래밍 카테고리에 있으니 프로그래밍 해서 이걸 다 이어붙이라는 의미인듯 하다. 이번 문제는 Python PIL 라이브러리를 이용해서 풀었다. PIL은 Python Imaging Library의 약자로 파..

워게임/CTFlearn 2023.08.05

[CTFlearn] Get Into Command Mission - MISC / IDA

CTFlearn 에서 제공하는 Hard 난이도의 MISC 카테고리 문제 MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제 설명을 대충 보면 어떤 프로그램을 발견했는데 잠겨있어서 이걸 풀어야 한다는 내용이다. 문제에서 주어지는건 program.exe 파일이다. 해당 프로그램은 cmd 창에서 실행시킬 수 있다. 그냥 실행시켰더니 문법 오류라면서 --help 옵션을 줘서 실행해보라고 한다. --help 옵션을 줘서 실행시켜 보니 문법을 알려준다. 프로그램 형태로 입력하라고 한다. 아무거나 입력해봤더니 Access denied. 가 떴다. 바로 IDA 라는 도구를 이용해 해당 EXE 파일을 분석해봤다. main 함수의 수도코드를 확인해 봤는데 아까 본것처럼 --hel..

워게임/CTFlearn 2023.08.03
반응형