반응형

워게임/247CTF 18

[247CTF] HIDDEN FLAG FUNCTION - 포너블 / 버퍼오버플로우 / IDA / Pwndbg / Pwntool

247CTF 에서 제공하는 간단한 버퍼오버플로우 문제 문제에서는 hidden_flag_function 바이너리 파일과 원격 접속 주소가 제공된다. IDA 를 이용해 해당 바이너리를 열어봤을 때 flag, chall, main 세 함수가 정의되어 있었다. main 함수에서는 chall 함수를 호출하고 있고 chall 에서는 scanf로 사용자의 입력을 받는다. v1 의 크기가 68인데 입력값 범위를 체크하지 않아 버퍼오버플로우가 가능해 보인다. 마지막 flag 함수는 서버 내부의 flag.txt 파일을 불러와 내용을 출력해주는데 어디서도 호출하고 있지 않아 실행되지 않는 함수이다. 버퍼오버플로우를 통해 리턴 주소를 변경시켜 flag 함수가 실행되도록 만들어야 한다. pwndbg를 이용해 바이너리를 분석한다..

워게임/247CTF 2023.10.04

[247CTF] MY MAGIC BYTES - 암호학 / XOR

247CTF 에서 제공하는 MODERATE 난이도의 암호학 문제 XOR 과 관련된 문제이다. 문제에서 제공되는 것은 my_magic_bytes.jpg.enc 파일이다. 해당 파일의 내용을 보면 전혀 무엇인지 알 수 없는 상태로 암호화가 되어있다. 문제 설명에 나와있듯이 어떤 키값으로 XOR 되어있기 때문이다. .jpg.enc 라는 확장자를 통해 암호화 되기 전에는 jpg 파일이었음을 알 수 있다. 키 값을 찾아내기 위해서는 jpg 파일이 기본적으로 가지는 특징들을 이용해야 한다. jpg XOR key = enc 라면 end XOR jpg = key 이기 때문이다. 가장 쉽게 확인할 수 있는 것은 jpg 파일의 시그니처이다. 파일마다 조금씩 다르긴 하지만 어떤 jpg 파일들은 FF D8 FF E0 00 1..

워게임/247CTF 2023.10.02

[247CTF] AN IMPOSSIBLE NUMBER - MISC / 정수 오버플로우 / C

247CTF 에서 제공하는 EASY 난이도의 MISC 문제 MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. IMPOSSIBLE NUMBER 라고 하는것을 보니 정수 오버플로우와 관련되었음을 직감할 수 있다. 예전에 비슷한 문제를 다뤘었다. (https://hackingstudypad.tistory.com/619) 문제에서 제공되는 C 코드는 이렇다. impossible_number 를 입력받는데 impossible_number 이상이고, impossible_number 가 impossible_number + 1 보다 커야한다는 조건이 걸려있다. 상식적으로 이런 숫자는 없지만 C언어의 int형을 사용하기 때문에 이 문제는 아주 쉽게 해결할 수 있다. int 형의 경..

워게임/247CTF 2023.10.01

[247CTF] THE TEXT EDITOR JAIL - MISC / Vim

247CTF 에서 제공하는 EASY 난이도의 MISC 문제 MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제페이지에 접속하면 VIM 편집기 화면이 나온다. 이 화면을 벗어나서 터미널로 이동해야하는 느낌이다. :wq! 를 입력해서 강제 종료를 시도해보면 No file name 에러나 나면서 종료가 되지 않는다. 뭔가 종료할 수 있는 다른 방법을 찾야아 한다. VIM 편집기에서는 터미널로 나올 수 있는 다른 방법이 있다. :shell 이라고 명령어를 입력하게 되면 이렇게 터미널로 나갈 수 있다. ls -al 명령어를 쳐보면 run_for_flag 파일이 있는것을 확인할 수 있고 해당 바이너리를 실행시키면 플래그를 확인할 수 있다.

워게임/247CTF 2023.09.28

[247CTF] ERROR REPORTING PROTOCOL - 포렌식 / Wireshark / Tshark

247CTF에서 제공하는 네트워크 패킷 분석과 관련된 문제 기존에 블로그에서 다뤘던 문제 유형과 크게 다르지 않은 쉬운 문제이다. (https://hackingstudypad.tistory.com/495) 문제에서 주어지는 것은 error_reporting.pcap 파일이다. 해당 파일을 Wireshark 로 열어볼 수 있는데 열어보면 맨 위에 하나만 ICMP request 패킷이고 나머지는 ICMP reply 패킷인 것을 볼 수 있다. reply 패킷에 전송될 데이터가 숨겨져 있는 느낌이다. 두번째 패킷을 선택해 data.data 영역을 보면 ff d8 ff e0 로 시작하는것을 볼 수 있다. FF D8 FF E0 로 시작하는것은 JPG 파일의 특징이다. 이런걸 파일 시그니처 라고 한다. JPG 파일을..

워게임/247CTF 2023.09.26

[247CTF] COMPARE THE PAIR - 웹해킹 / MD5 Magic Hash

php의 약한 비교(Loose Comparison) 로 인해 발생하는 php magic hash 와 관련된 웹 해킹 문제이다. 문제페이지어 들어가면 이런 코드가 나온다 php 로 작성되었는데 GET 으로 password 파라미터가 설정되어있고, md5(salt. $_GET['password']) 의 값이 password_hash 의 값인 0e902564435691274142490923013038 와 같은지 확인한 후 같으면 flag 를 보여주는 기능이다. salt 까지 들어간 해시값의 원래 문자열을 찾는건 불가능에 가깝지만 비교할때 '===' 가 아닌 '==' 을 이용해 두 값을 비교하기 때문에 취약점이 발생한다. 위 사진처럼 php 에서는 == 을 사용해 비교를 할 경우 두 값이 정확하게 같지 않아도 ..

워게임/247CTF 2023.09.23

[247CTF] TRUSTED CLIENT - 웹해킹 / Javascript

247CTF 에서 제공하는 EASY 난이도의 웹히킹 문제 문제 설명을 보면 개발자들이 크리덴셜을 클라이언트 사이드에 저장할 때 난독화 해야하는것이라는 뉘앙스로 적혀있다. 문제 페이지에 접속하면 이런 로그인 창이 하나 나온다. 뭔가 여기 로그인을 성공시켜야할 듯한 느낌이다. F12를 눌러 개발자 도구로 웹 페이지 소스를 보니 뭔가 난독화 되어있는 부분이 보인다. 아까 클라이언트에 크리덴셜을 저장한다는 그런 얘기가 있었던걸로 보아 이게 바로 크리덴셜 정보인듯 하다 해당 부분을 복사해서 콘솔 탭에 붙혀넣어봤는데 내용이 꽤 길다 오른쪽에 보이는 스크롤 만큼 내용이 꽉차있다. 해독하는 방법은 아주 간단하다. 난독화 되어있는 부분의 맨 뒤에 있는 () 를 지워주면 된다. () 를 지우고 엔터를 치면 해독된 자바스크..

워게임/247CTF 2023.09.21

[247CTF] SECURED SESSION - 웹해킹 / Flask

247CTF에서 제공하는 쉬운 난이도의 웹해킹 문제이다. 생각보다 쉽지는 않은것 같다. 문제페이지에 들어가면 이렇게 단순하게 서버의 소스코드만 나와있다. Python flask 기반으로 만들어 졌으며 os.urandom(24)로 SECRET_KEY 라는걸 만들어 쿠키로 사용하고 있다. 이 SECRET_KEY 값이 무엇인지 맞춰서 /flag 페이지로 이동할때 request 인자로 넣어줘야 session['flag'] 를 만날 수 있게 되는데, 현실적으로 os.urandom(24)을 때려맞추는건 불가능하다. 실제로 /flag 에 접근을 시도하면 Incorrect secret key! 라는 문구가 출력된다. 쿠기와 관련된 문제이니 F12를 눌러 개발자 도구의 네트워크 탭을 통해 session 쿠키값을 확인해 ..

워게임/247CTF 2023.09.19
반응형