[dreamhack] ROT128 문제풀이
2024. 1. 31. 23:02
워게임/dreamhack
ROT128 목차 문제 설명 해결 과정 Exploit 코드 문제 요약 문제 설명 -ROT128의 문제 설명 암호화된 encfile을 복호화 하여 flag.png를 취득하는 문제입니다. 해결과정 #!/usr/bin/env python3 hex_list = [(hex(i)[2:].zfill(2).upper()) for i in range(256)] # 0부터 256까지 16진수로된 리스트 생성 with open('flag.png', 'rb') as f: # flag.png 파일을 읽어옴 plain_s = f.read() plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s] #읽은 데이터를 16진수로된 리스트 생성 enc_list = list(range(l..
[dreamhack] rev-basic-8 문제풀이
2023. 12. 26. 20:58
워게임/dreamhack
[dreamhack] rev-basic-8 문제 풀이 목차 문제 설명 해결 과정 Exploit 코드 문제 요약 문제 설명 - rev-basic-8번의 문제설명 이 문제 설명에 의해서 단순히 문자열 값을 입력받아 문자열이 맞았는지 판별하여 correct, wrong을 출력하는 프로그램입니다. 해결 과정 - x64dbg를 이용해 동적분석 후 FLAG값을 취득하는 과정 동작 방식 확인하기 이 함수는 사용자에게 Input값을 입력받아 chall8.7FF73713100 함수에서 값에서 FLAG인지 아닌지 판별해 eax에 값을 가져와서 0인지 아닌지를 통해 Correct, Wrong을 출력하는 함수임을 보아 메인함수로 추측해 볼 수 있다 이함수는 rax의 값이 21인지 확인한후 n번째 문자열과 0xFB를 곱해서 0..
[dreamhack] dreamhack-tools-cyberchef 문제풀이
2022. 5. 31. 21:40
워게임/dreamhack
1. 드림핵에서 제공하는 cyberchef 툴을 이용해서 푸는 문제이다. 문제 파일을 다운로드하자. 2. 다운로드 받은 index.html을 브라우저로 실행하면 이상한 문자열과 인코딩 기법이 보인다. 뭔지 확인해보자. - Rail Fence : 평문의 순서를 재배치하여 암호화 하는 고전 암호이다. > 암호화 키가 1324인 평문 "TEST"의 암호화 결과는 "TTES"이다. - Base64 : Binary Data를 Text로 바꾸는 인코딩이다. > 이진 데이터를 6bit씩 자른 뒤 6bit에 해당하는 문자를 Base64 표에서 찾아 치환한다. 이진 데이터의 길이가 6bit로 딱 떨어지지 않을경우, 남는 비트 뒤에 0을 채워 6비트를 만들어내며 해당하는 문자 뒤에 패딩문자를 나타내는 "="가 추가된다. ..
[dreamhack] session-basic 문제풀이
2022. 5. 26. 13:59
워게임/dreamhack
[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 Web - Lv 2] Flask-Dev
2021. 12. 14. 00:49
워게임/dreamhack
문제 정보 취약점을 찾아 플래그를 획득해보세요. 플래그는 /flag를 실행하면 얻을 수 있습니다. 해당 문제는 숙련된 웹해커를 위한 문제입니다. 풀이 힌트 1. Flask Debugger Exploit 2. Python Programming 문제 풀이 더보기 문제 페이지를 들어가니, 아무것도 없고 "Hello !"만 덜렁덜렁있었다. 아무런 정보가 없어서 혹시나 하는 맘에 robots.txt를 요청하니, flask가 debugger 모드로 실행되고 있었다. 내가 flask를 공부했을 때 flask의 debugger 모드에서 취약점이 있으니, 배포할 때 꼭 debugger 모드로 되어있는지 체크하라고 했던 것으로 기억난다. 구글에 "Flask Debugger PIN exploit"이라고 검색하니 무수히 많은..
[Dreamhack Web - Lv 1] Tomcat Manager
2021. 11. 24. 03:44
워게임/dreamhack
문제 정보 드림이가 톰캣 서버로 개발을 시작하였습니다. 서비스의 취약점을 찾아 플래그를 획득하세요. 플래그는 /flag 경로에 있습니다. 풀이 힌트 1. 공격 백터 파악 2. Path Traversal 취약점 3. Tomcat의 Manager 설정 파일 문제 풀이 더보기 문제 페이지에 들어가니, 위와 같은 사이트가 나왔다. 공격 백터를 찾기위해 페이지를 조사 했지만, robots.txt도 없고 설명에서도 별다른 내용이 없었다. 그래서 페이지 소스코드 보기를 하여 코드를 살펴보니, /image.jsp이라는 페이지를 찾을 수 있었다. 공격 백터로 /image.jsp의 file 파라미터를 이용하면 될 듯 싶다. /image.jsp의 file 파라미터를 이용하여 index 페이지에서 본 사진을 불려왔다. 내가 ..
[Dreamhack Web - Lv 1] mongoboard
2021. 11. 10. 15:56
워게임/dreamhack
문제 정보 node와 mongodb로 구성된 게시판입니다. 비밀 게시글을 읽어 FLAG를 획득하세요. MongoDB < 4.0.0 풀이 힌트 1. MongDB의 ObjectID 구조 참고 사이트 : https://docs.mongodb.com/manual/reference/method/ObjectId/ 문제 풀이 더보기 문제 페이지에 들어가니, 서버가 생성될 때 자동으로 값들이 등록이 된 것을 볼 수 있었다. 현재 눈으로 보이는 특이점은 FLAG 게시물은 no가 없다는 것이다. 첫번째 페이지에 들어가니, 위와 같은 게시물 내용이 있었다. FLAG 게시물은 Secret Document라는 Alert가 떴다. 여기까지 확인해본 결과, 이 페이지는 싱글 페이지로 제작된 페이지로 보였다. 개발자 도구를 이용하여..
[dreamhack] baby-sqlite 문제풀이
2021. 10. 20. 23:03
워게임/dreamhack
[WEB] baby-sqlite 문제풀이 문제를 확인해보자. 로그인 서비스에서 SQL Injection을 통해 플래그를 획득하는 문제이다. 접속해보자. 입력한 계정정보를 uid/upw 파라미터 값으로 넘긴다. 존재하는 계정인지 모르겠으나 Good! 이라는 응답을 준다. 이번에는 로그인 우회의 정석 1=1을 해보자. No Hack! 이라는 응답을 준다. 아마도 입력한 값을 필터링 하는 로직이 있는 것 같다. 소스코드를 열어서 확인해보자. #!/usr/bin/env python3 from flask import Flask, request, render_template, make_response, redirect, url_for, session, g import urllib import os import sq..
[dreamhack] rev-basic-7 문제풀이
2021. 9. 30. 23:45
워게임/dreamhack
[Reversing] rev-basic-7 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall7.7FF744611000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 위 함수에서 사용자 입력 값에 대해 수행하는 연산은 다음과 같다. [cmp rax, 1F] // 32번 반복 [and eax, 7] // eax에 7과 and 연산한 값을 저장 [movzx ecx, al] //