반응형

워게임 270

[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

[Root Me] ELF x86 - Format string bug basic 1 - 포너블

Root Me에서 제공하는 간단한 난이도의 Format String 문제 문제에서 제공되는 바이너리의 소스코드이다. C언어로 제작되었다. 먼저 .passwd 파일의 내용일 읽은 뒤 *secret 에 저장한다. 그런다음 fgets 로 buffer 에 해당 값을 담아준 뒤 printf 로 사용자로부터 입력받은 파라미터인 argv[1] 을 출력한다. printf 부분에서 문제가 발생할 수 있다. 사용자에게 입력을 받아 결과를 출력할 때 포맷 스트링이라는 것을 사용하는데 기호로 다음과 같이 표시된다. %d : 정수형 10진수 상수 %f : 실수형 상수 %c : 문자 %s : 문자 스트링 %u : 양의 정수(10진수) %o : 양의 정수(8진수) %x : 양의 정수(16진수) %p : 포인터 main 함수에 있는..

워게임/Root Me 2023.08.30

[Root Me] OSPF - Authentication - 포렌식 / Wireshark / John the Ripper / Ettercap

Root Me에서 제공하는 네트워크 패킷 포렌식 문제 OSPF 패킷과 관련된 문제이다. OSPF는 Open Shortest Path First 의 약자로 동적 라우팅 프로토콜로 대표적인 링크 상태 라우팅 프로토콜이다. 문제에서는 OSPF authentication key 를 찾는것이 목표이다. 사실 잘 모르는 분야여서 열심히 서치하는데 시간이 걸렸다. 문제에서 주어진 ospf_authentication_hash.pcapng 파일을 열어보면 OSPF 패킷 14개가 캡쳐되어 있다. 여기저기 구글에 검색해보니 OSPF 헤더에 있는 Auth Crypt Date 가 암호화된 키값이라고 한다. 바로 두칸 위에 있는 Auth Crypt Sequence Number 가 16 으로 되어있는데 이건 MD5 로 암호화 되었..

워게임/Root Me 2023.08.28

[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

[Root Me] Monoalphabetic substitution - Caesar / 암호학

Root Me에서 제공하는 암호학 관련 문제 Monoalphabetic Caeser 암호인데 왜이렇게 레벨이 높지 생각했는데 그 이유가 있었다. 문제가 엄청 어렵기 보단 조금 수고스럽게 풀어야 한다. 그리고 문제 자체가 프랑스어로 나와서 문제를 풀어도 푼지 알아채기가 힘들다.. 문제 설명을 읽어보면 정답을 제출할 때는 각 문장의 맨 앞글자를 이어서 쓰고, 그다음 각 문장의 맨 뒷글자를 이어서 쓰라고 한다. 문제에서 주어지는 암호문은 이렇다. 만약 여기서 바로 정답을 제출한다면 tfhqdlhfpkmeokgq 와 같이 제출하면 된다는 의미이다. https://rumkin.com/tools/cipher/caesar/ Caesar This is a standard Caesarian Shift cipher enc..

워게임/Root Me 2023.08.24

[Root Me] Bash - cron - 포너블

Root Me에서 제공하는 포너블 문제 cron 예약작업과 관련된 문제이다. WebSSH 버튼을 누르면 이렇게 웹 형태로 SSH 접속이 가능하다. 여기서 문제를 바로 풀면 된다. ls -al 명령어로 어떤 파일들이 있는지 살펴본다. .passwd 파일은 app-script-ch4-craked 권한으로 현재 권한이 app-script-ch4 권한이기 때문에 내용을 읽을 수 없다. 이 파일의 내용을 읽는것이 문제의 목표이다. ch4 파일에는 bash 스크립트가 작성되어 있다. cron.d 폴더 하위에 있는 작업을 실행시키는 내용이다. crontab은 */1 * * * * 이라고 걸려있는데 이건 지정된 예약작업을 1분마다 실행시킨다는 의미이다. 일단 cron.d 폴더에 문제를 해결하기 위한 스크립트를 생성해야..

워게임/Root Me 2023.08.21

[Root Me] Known plaintext - XOR - 암호학 / HxD

Root Me에서 제공하는 xor 관련 암호학 문제 제목이 Known plaintext 인데 Known plaintext란 한글로 기지평문(공격)으로 공격자가 어떤 암호문과 그에 대한 평문을 알고 있을때 해독하는 방법이다. 문제에서는 ch3.bmp 파일이 주어진다. 파일이 깨진듯 내용은 보이지 않는다. HxD로 파일을 열어보면 맨 앞부분이 24 2C로 시작하는 것을 볼 수 있다. BMP 파일은 기본적으로 42 4D로 시작되어야 한다. 문제 제목이 XOR이니 어떤 키값으로 XOR 되어서 파일 시그니처가 변했고, 그에 따라 윈도우에서 BMP 파일을 인식하지 못하는 것이다. 파일 시그니처로 알고있는 42 4D 가 바로 평문을 알고있는 것이다. CyberChef(https://gchq.github.io/Cybe..

워게임/Root Me 2023.08.19

[Root Me] File - PKZIP - 암호학 / John the Ripper

Root Me의 Cryptanalysis 카테고리에 제공된 암호학 문제 사실 암호학이라기 보단 그냥 크랙하는 문제이다. 문제에서 제공되는 것은 ch5.zip 파일이다. 당연하겠지만 이 파일의 압축을 풀기위해선 비밀번호가 요구된다. 비밀번호가 걸린 zip 파일을 크랙하는 것은 이미 블로그에서 많이 다뤘었다. John the Ripper 도구를 사용하면 된다. John the Ripper 여러가지 비밀번호를 crack 해주는 기능을 가지고 있다. zip2john > hash 명령어로 hash 파일을 생성해준 다음 john --wordlist= hash 명령어로 비밀번호를 crack 해주면 된다. 잠시 기다리면 금방 결과가 나온다. 비밀번호가 상당히 간단한데.. 너무 성의없이 문제를 만든건 아닌가 싶다. 압축..

워게임/Root Me 2023.08.16

[Root Me] Shift cipher - 암호학 / Python

Root Me에서 제공하는 암호학 문제 약간의 코딩이 필요하다. 문제에서 주어지는 것은 ch7.bin 파일이다. 해당 파일을 HxD로 열어봤더니 내용에 일반적이지 않은 문자들까지 섞여있는것을 확인했다. Shift cipher 이고 쉬운 난이도의 문제라 단순한 카이사르 암호나 rot 로 풀수 있을줄 알았는데 그렇지 않았다. text = open('ch7.bin','rb').read() i = 0 while i < 20: print(''.join([chr(c - i) for c in text])) i += 1 문제푸는 코드는 아주 단순하게 작성할 수 있다. ch7.bin 파일을 rb 로 읽어서 각 문자열에 조금씩 값을 늘려가며 빼주는 것이다. 테스트 삼아 i 를 20 미만으로 작성해서 돌려봤는데 금방 플래그..

워게임/Root Me 2023.08.14

[CTFlearn] Polycrypto - 암호학 / Python

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

워게임/CTFlearn 2023.08.12
반응형