워게임
-
문제풀이 목표 : 기록되는 위치/방법 및 취약한 코드를 찾으십시오. 힌트 : 안전하지 않은 로깅은 개발자가 자격 증명, 세션 ID, 금융 세부 정보 등과 같은 민감한 정보를 내부적으로 또는 비간섭적으로 기록할 때 발생합니다. 일단 임의의 숫자를 삽입하여 CHECK OUT 버튼을 클릭 시 "An error occured.Please try again later"이라는 오류 문구를 Toast로 띄어줬다. adb shell ps | grep "diva" 명령을 통해 디바이스에서 실행 중인 DIVA 어플리케이션의 PID를 확인을 하였다. 확인한 PID를 adb logcat의 pid 옵션에 넣어 DIVA 어플리케이션의 로그만 출력하도록 설정하였다. 출력된 로그에서 입력한 값을 검색해보니, 평문으로 출력되는 것을 ..
[Android] 01. 취약한 로깅문제풀이 목표 : 기록되는 위치/방법 및 취약한 코드를 찾으십시오. 힌트 : 안전하지 않은 로깅은 개발자가 자격 증명, 세션 ID, 금융 세부 정보 등과 같은 민감한 정보를 내부적으로 또는 비간섭적으로 기록할 때 발생합니다. 일단 임의의 숫자를 삽입하여 CHECK OUT 버튼을 클릭 시 "An error occured.Please try again later"이라는 오류 문구를 Toast로 띄어줬다. adb shell ps | grep "diva" 명령을 통해 디바이스에서 실행 중인 DIVA 어플리케이션의 PID를 확인을 하였다. 확인한 PID를 adb logcat의 pid 옵션에 넣어 DIVA 어플리케이션의 로그만 출력하도록 설정하였다. 출력된 로그에서 입력한 값을 검색해보니, 평문으로 출력되는 것을 ..
2022.11.29 -
1. 드림핵에서 제공하는 cyberchef 툴을 이용해서 푸는 문제이다. 문제 파일을 다운로드하자. 2. 다운로드 받은 index.html을 브라우저로 실행하면 이상한 문자열과 인코딩 기법이 보인다. 뭔지 확인해보자. - Rail Fence : 평문의 순서를 재배치하여 암호화 하는 고전 암호이다. > 암호화 키가 1324인 평문 "TEST"의 암호화 결과는 "TTES"이다. - Base64 : Binary Data를 Text로 바꾸는 인코딩이다. > 이진 데이터를 6bit씩 자른 뒤 6bit에 해당하는 문자를 Base64 표에서 찾아 치환한다. 이진 데이터의 길이가 6bit로 딱 떨어지지 않을경우, 남는 비트 뒤에 0을 채워 6비트를 만들어내며 해당하는 문자 뒤에 패딩문자를 나타내는 "="가 추가된다. ..
[dreamhack] dreamhack-tools-cyberchef 문제풀이1. 드림핵에서 제공하는 cyberchef 툴을 이용해서 푸는 문제이다. 문제 파일을 다운로드하자. 2. 다운로드 받은 index.html을 브라우저로 실행하면 이상한 문자열과 인코딩 기법이 보인다. 뭔지 확인해보자. - Rail Fence : 평문의 순서를 재배치하여 암호화 하는 고전 암호이다. > 암호화 키가 1324인 평문 "TEST"의 암호화 결과는 "TTES"이다. - Base64 : Binary Data를 Text로 바꾸는 인코딩이다. > 이진 데이터를 6bit씩 자른 뒤 6bit에 해당하는 문자를 Base64 표에서 찾아 치환한다. 이진 데이터의 길이가 6bit로 딱 떨어지지 않을경우, 남는 비트 뒤에 0을 채워 6비트를 만들어내며 해당하는 문자 뒤에 패딩문자를 나타내는 "="가 추가된다. ..
2022.05.31 -
[WEB] session-basic 문제풀이 1. admin 계정으로 로그인에 성공하여 플래그를 획득하는 문제이다. 2. 위 경로 접속 시 로그인 페이지를 확인할 수 있으나 특이사항은 없기 때문에 소스코드를 확인해보자. 3. 다운로드 받은 파이썬 소스코드 내용은 다음과 같다. 중요한 부분을 나눠서 해석해보자. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', ..
[dreamhack] session-basic 문제풀이[WEB] session-basic 문제풀이 1. admin 계정으로 로그인에 성공하여 플래그를 획득하는 문제이다. 2. 위 경로 접속 시 로그인 페이지를 확인할 수 있으나 특이사항은 없기 때문에 소스코드를 확인해보자. 3. 다운로드 받은 파이썬 소스코드 내용은 다음과 같다. 중요한 부분을 나눠서 해석해보자. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', ..
2022.05.26 -
문제 정보 StolenByte를 구하시오 Ex) 75156A0068352040 풀이 힌트 2-1. PUSHAD(PUSHAL) 범용 레지스터의 값을 Stack에 저장 2-2. POPAD(PUSHAL) Stack의 데이터를 범용 레지스터에 저장 2-3. Stolenbyte 안티디버깅 기법으로 일부 코드를 훔쳐서 다른 부분으로 옮긴 것을 말한다. 주로 OEP 주소로 점프하기 전 위치에서 값을 PUSH하는 방식으로 수행된다. 문제 풀이 더보기 3-1. 문제 프로그램을 실행하면 "Hmmmmm, I can't find the file!" 이라는 에러 문구가 출력된다. 해당 구문이 출력되는 부분을 찾아서 에러를 확인해보자. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, 수동으로 패킹을 풀어보자. 3-2. ..
[CodeEngn] Basic RCE L09 문제풀이문제 정보 StolenByte를 구하시오 Ex) 75156A0068352040 풀이 힌트 2-1. PUSHAD(PUSHAL) 범용 레지스터의 값을 Stack에 저장 2-2. POPAD(PUSHAL) Stack의 데이터를 범용 레지스터에 저장 2-3. Stolenbyte 안티디버깅 기법으로 일부 코드를 훔쳐서 다른 부분으로 옮긴 것을 말한다. 주로 OEP 주소로 점프하기 전 위치에서 값을 PUSH하는 방식으로 수행된다. 문제 풀이 더보기 3-1. 문제 프로그램을 실행하면 "Hmmmmm, I can't find the file!" 이라는 에러 문구가 출력된다. 해당 구문이 출력되는 부분을 찾아서 에러를 확인해보자. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, 수동으로 패킹을 풀어보자. 3-2. ..
2022.01.30 -
문제 정보 OEP를 구하시오 Ex) 00400000 풀이 힌트 2-1. OEP OEP란 Original Entry Point를 말한다. 패킹된 파일을 실행할 때 자동적으로 시스템 내부에서 언패킹을 한다. 언패킹이 끝나면 복구한 원본코드를 동작시켜야 하는데 이 원본코드의 Entry Point를 OEP라고 한다. 문제 풀이 더보기 ※ 패킹된 파일을 프로그램을 이용해 언패킹 하는 것과 디버깅을 통해 수동으로 OEP를 확인하는 방법이 존재하지만, 패킹된 파일이 깨져?있는 것 같아 본 문제에서는 자동으로 OEP를 획득하고, 다음 9번 문제에서는 수동으로 푸는 법을 작성했다. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, UPX 실행파일을 통해 언패킹을 수행한다. 3-2. 언패킹한 파일을 PEiD에 로드..
[CodeEngn] Basic RCE L08 문제풀이문제 정보 OEP를 구하시오 Ex) 00400000 풀이 힌트 2-1. OEP OEP란 Original Entry Point를 말한다. 패킹된 파일을 실행할 때 자동적으로 시스템 내부에서 언패킹을 한다. 언패킹이 끝나면 복구한 원본코드를 동작시켜야 하는데 이 원본코드의 Entry Point를 OEP라고 한다. 문제 풀이 더보기 ※ 패킹된 파일을 프로그램을 이용해 언패킹 하는 것과 디버깅을 통해 수동으로 OEP를 확인하는 방법이 존재하지만, 패킹된 파일이 깨져?있는 것 같아 본 문제에서는 자동으로 OEP를 획득하고, 다음 9번 문제에서는 수동으로 푸는 법을 작성했다. 3-1. PEiD를 통해 UPX로 패킹된 것을 확인하고, UPX 실행파일을 통해 언패킹을 수행한다. 3-2. 언패킹한 파일을 PEiD에 로드..
2022.01.30 -
Level Goal After all this git stuff its time for another escape. Good 결국 이 자식은 또 다른 탈출을 위한 시간을 가집니다. 행운을 빕니다! Hint 1. sh Write Up 더보기 bandit32에 로그인을 하니, sh 쉘로 로그인이 되었다. 그리고, 입력한 값은 모두 대문자로 변환되어서 명령어를 실행할 수 없었다. 나는 구글에 "sh to bash"이라고 검색하니, 아래의 블로그를 찾을 수 있었다. https://www.cyberciti.biz/faq/how-to-change-shell-to-bash/ 이것을 보고, $0를 넣어서 enter을 누르니 bash로 넘어갔다. 실행 권한을 확인해보니, bandit33의 권한이 있어서 바로 /etc/b..
[OverTheWire System - Bandit] Level 32 → Level 33Level Goal After all this git stuff its time for another escape. Good 결국 이 자식은 또 다른 탈출을 위한 시간을 가집니다. 행운을 빕니다! Hint 1. sh Write Up 더보기 bandit32에 로그인을 하니, sh 쉘로 로그인이 되었다. 그리고, 입력한 값은 모두 대문자로 변환되어서 명령어를 실행할 수 없었다. 나는 구글에 "sh to bash"이라고 검색하니, 아래의 블로그를 찾을 수 있었다. https://www.cyberciti.biz/faq/how-to-change-shell-to-bash/ 이것을 보고, $0를 넣어서 enter을 누르니 bash로 넘어갔다. 실행 권한을 확인해보니, bandit33의 권한이 있어서 바로 /etc/b..
2022.01.20