• Problem path
  • Problem information
  • Problem solving

 

 

 

[Problem path]

https://dreamhack.io/wargame/challenges/1186

 

what-is-my-ip

Description How are they aware of us even behind the wall? FYI Flag Location: /flag Flag Format: DH{...}

dreamhack.io


 

 

 

[Problem information]


 

 

 

[Problem solving]

1. When I connected to the problem server, my public IP address was displayed.

 

 

2. In the problem file, I checked the code in which the flag function was written in the root path part. Analyzing the code, you can see that the IP address is forwarded to the server to execute the desired shell command(for example: using '; ls' command to check the directory list) and capture and show the results fo the commands executed by the server.

 

 

3. I sent the request to the web server via curl as follows. The '-H' option is to add a request header, and "X-Forwarded-For" is one of the headers that carries the client's IP address to the server. And execute the "; cat /flag" shell command. That is, it functions to execute a shell command "; cat /flag" using the user's IP address and show the result to the user. It can be seen that the flag is derived as a result of the shell command as follows.

 

 

 

 

 

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] session-basic  (0) 2023.08.13
  • Problem path
  • Problem information
  • Problem solving

 

 

 

[Problem path]

https://dreamhack.io/wargame/challenges/1113

 

php7cmp4re

Description php 7.4로 작성된 페이지입니다. 알맞은 Input 값을 입력하고 플래그를 획득하세요. 플래그 형식은 DH{} 입니다.

dreamhack.io


 

 

 

[Problem information]


 

 

 

[Problem solving]

1. First, I accessed the web server. There was a page where you can get input1 and input2.

 

 

2. Second, I downloaded the problem file. There were three php files in it. When I checked the code, the check.php file  specified the conditions of input1 and input2.

 

 

3. It seems that the flag is echoed only when both input1 and input2 conditions are suitable. The conditions are summarized in the following table.

Input Length Size
input_1        input_1 < 4    input_1 < "8" && input_1 < "7.A" && input_1 > "7.9"
input_2 input_2 < 3 && input_2 > 1 input_2 < 74 && input_2 > "74"

 

Looking at input1, I guessed that it was an ASCII code value because it was compared with the letters "8", "7.A", and "7.9". Therefore, referring to the ASCII code table, it was confirmed that the number of characters ranging from 

7.: to 7.@, which is larger than the letter 9 and smaller than the letter A, and has less than 4 characters, can be put into input1. It has been confirmed that input2 can contain numbers ranging from 7: to 7~, which are 2 characters and larger 

than the letter 4 and smaller than the number 4.

 

 

4. I simply put in the input value according to the conditions.

 

The flag was derived as follows.

 

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] what-is-my-ip  (0) 2024.03.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] session-basic  (0) 2023.08.13
  • 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

https://dreamhack.io/wargame/challenges/960

 

Type c-j

Description php로 작성된 페이지입니다. 알맞은 Id과 Password를 입력하여 플래그를 획득하세요. 플래그의 형식은 DH{...} 입니다.

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 우선 웹서버에 접속했다. ID와 Password를 입력받을 수 있는 페이지가 있다. 

 

 

2. 얻을 수 있는 특별한 정보가 없어 소스코드를 다운로드하였다. 3개의 php 파일이 있는데 코드를 확인해 보니 check.php 파일을 통해서 ID와 Password를 얻을 수 있었다.

 

check.php 파일의 소스코드에서 ID와 Password를 얻을 수 있는 코드를 확인해 봤다. getRandStr() 함수를 호출하여 나온 값이 id에 저장되고 sha1("1") 함수를 호출해서 나온 값은 pw에 저장되는 것을 알 수 있다.

 

 

3. id 값을 먼저 구하기 위해서 getRandStr() 함수가 있는 코드로 가봤다. 어떠한 연산을 수행해서 결과적으로 randomString을 리턴하는 것을 알 수 있다.

 

randomString 값을 구하기 위해서 getRandStr() 함수를 호출하고 반환되는 값을 ID 변수에 저장한 후 해당 변수의 값을 출력하는 코드를 구성했다.

 

그리고 이 코드를 온라인 컴파일러에 돌렸더니 다음과 같은 ID 값이 출력되었다. 

 

ID 값이 맞는지 확인하기 위해서 다음 코드를 보면 알 수 있다. 입력한 id가 주어진 id와 같고, id의 길이가 10자리라면 ID pass를 출력한다는 것이다. 

 

그래서 ID 값에 구한 값을 넣고 Password에 아무 값이나 집어넣어 제출했다.

 

ID가 맞다는 것을 알 수 있다.

 

 

4. 이제 Password 값을 구해야 한다. pw 변수에는 sha1("1") 함수의 결과 값이 저장된다. (sha1 함수는 "Secure Hash Algorithm 1"의 약자로, 입력 데이터를 메시지 다이제스트라는 해시 값으로 만드는 암호화 해시 함수이며 보통 16진수 40자리로 랜더링 된다.) 온라인으로 SHA1 해시를 생성해 주는 사이트에서 1을 입력하고 생성한 결과는 다음과 같다.

 

나온 해시 값은 총 40자리이다. 그런데 소스코드에서 pw는 8자리 이어야 flag 출력이 가능하다. 

 

그냥 해시 값 앞 8자리를 pw에 넣어보기로 했다. 

 

바로 FLAG가 도출된 것을 확인할 수 있다. 

 

 

 

Reference:  https://www.mycompiler.io/ko/new/php

                        https://www.convertstring.com/ko/Hash/SHA1

                        https://ko.wikipedia.org/wiki/SHA-1

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] what-is-my-ip  (0) 2024.03.30
[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] session-basic  (0) 2023.08.13
  • 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

https://dreamhack.io/wargame/challenges/850

 

Flying Chars

Description 날아다니는 글자들을 멈춰서 전체 문자열을 알아내세요! 플래그 형식은 DH{전체 문자열} 입니다. ❗첨부파일을 제공하지 않는 문제입니다. ❗플래그에 포함된 알파벳 중 x, s, o는 모두

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 먼저 웹서버에 접속하였다. 문제 설명에 나와있듯이 글자들이 날아다니는 것을 볼 수 있다. 이 글자들을 순서대로 조합하면 FLAG가 나오는 것 같다. 그런데 글자들이 빠르게 지나가서 눈으로 확인하기는 힘들다.

스크린샷처럼 찍으면 보이기는 하지만 글자 순서를 어떻게 조합할지 까다롭기에 다른 방법을 생각해 봤다.

 

 

2. 소스코드를 보면 날아다니는 글자의 순서가 나와있을 것이라 예측했다.

개발자 도구를 열어 sources 탭에 접근하였다. 역시나 png 확장자의 글자 이미지들이 들어있었고 코드에는 이미지 순서가 나와있었다.

 

 

3. 이제 문제 설명에 있는 대문자, 소문자 구분을 바탕으로 코드에 나온 순서대로 글자 이미지들을 조합해 보면 FLAG가 도출된다. FLAG를 DH{} 형식에 대입한 결과는 다음과 같다.

 

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] session-basic  (0) 2023.08.13
[Webhacking] cookie  (0) 2023.08.06
  • 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

https://dreamhack.io/wargame/challenges/267

 

devtools-sources

개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아보세요. 플래그 형식은 DH{...} 입니다. Reference Tools: Browser DevTools

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 따로 웹서버를 생성하지 않고 있기에 문제 파일을 다운로드하였다. 

문제 파일을 열어보니 다음과 같은 디렉토리와 파일로 구성되어 있었다.

문제정보에서 개발자 도구의 sources 탭을 이용해서 FLAG를 구하라 했으니 html 파일을 열어야 될 것이라고 짐작했다. 먼저 index.html 파일에 접속했다.

 

 

2. 그리고 개발자 도구의 sources 탭에 접근했다. 여기서 찾아야 하는 것은 FLAG지만 FLAG가 어떤 것인지 모르기에 Flag를 감싸고 있는 DH{} 형식을 찾아보면 될 것이다.  하지만 sources 탭에 많은 파일들이 들어있는 것을 알 수 있다.

 

파일마다 들어가서 일일히 검사하기는 힘들기에 Ctrl+Shift+F를 통한 전체검색 혹은 sources 탭 아래의 검색 기능을 활용하여 DH를 검색해 보았다.

아래와 같이 FLAG가 도출된 것을 확인할 수 있다.

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] session-basic  (0) 2023.08.13
[Webhacking] cookie  (0) 2023.08.06
  • 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

https://dreamhack.io/wargame/challenges/409

 

session-basic

Description 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{...} 입니다. Reference Background: Cook

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 문제파일을 다운로드하여 소스코드를 봤다. 다음 코드를 보면 로그인할 수 있는 방법이 3가지가 있는 것 같다.

 

첫 번째 방법을 이용해 username: guest, password: guest로 로그인해 보았다.

다음과 같이 guest로 로그인되었지만 admin 계정이 아니라고 표시되는 것을 확인할 수 있다. 두 번째 방법을 이용해도 admin 계정으로 로그인하지 않는 한 이와 비슷할 것이라 추정했다. 

 

 

2. 앞의 문제설명에서 2가지 중요한 정보가 있다. 쿠키와 세션으로 인증상태를 관리하며 admin 계정을 통해서만 FLAG 획득이 가능하다는 것이다.

개발자도구를 통해 쿠키에 접근해 보았다. guest 계정의 sessionid 값이 저장되어 있었다.

지금 필요한 것은 admin 계정의 sessionid 값이다. 

 

 

3. 소스코드를 더 읽어봤더니 아래에 '/admin' 경로가 있다. 여기에서 session storage를 반환하는 코드를 발견했다.

 

따라서 '/admin' 경로로 이동했더니 admin에 해당하는 sessionid가 저장되어 있는 것을 확인할 수 있었다.

 

이 admin 계정의 sessionid 값을 쿠키의 값에 집어넣어 보았다.

 

그리고 루트 경로로 이동했더니 FLAG가 도출된 것을 알 수 있다.

 

이제 FLAG를 알았으니 웹서버에 로그인할 수 있는 세 번째 방법을 이용하여 로그인해 보겠다. username: admin, password: FLAG로 로그인했더니 wrong password라고 경고창이 뜬다. 흠..

 

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] cookie  (0) 2023.08.06
  • 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

https://dreamhack.io/wargame/challenges/6

 

cookie

쿠키로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{...} 입니다. Reference Introduction of Webhacking

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 문제설명에서 admin 계정으로 로그인하면 플래그를 얻을 수 있다고 하였다. 따라서 웹서버에 접속해 로그인 창에서 username에 admin, password에 admin을 넣고 로그인해 보았다. wrong password라고 경고창을 띄우고 있다.

 

 

2. 문제파일을 다운로드하여 소스코드를 봤다. 다음 코드를 보면 로그인을 할 수 있는 방법이 2가지가 있는 것 같다.

 

일단 FLAG가 무엇인지 모르니 두 번째 방법으로는 못하리라 예상했다.

username password
guest guest
admin FLAG

 

따라서 첫 번째 방법을 이용해 username: guest, password: guest로 로그인해 보았다.

다음과 같이 guest로 로그인되었지만 admin 계정이 아니라고 표시되는 것을 확인할 수 있다.

 

 

3. 앞의 문제설명에서 2가지 중요한 정보가 있다. 쿠키로 인증상태를 관리하며 admin 계정을 통해서만 FLAG 획득이 가능하다는 것이다.

개발자도구를 이용하여 애플리케이션 탭의 쿠키에 접근하였다. 현재 guest 계정으로 로그인한 상태인데 admin 계정으로 로그인하라고 했으니 쿠키 값 부분에 guest 대신 admin을 넣어 쿠키변조를 해보았다.

 

그리고 새로고침했더니 플래그가 도출된 것을 알 수 있다.

 

이제 FLAG를 구했으니 웹서버에 로그인할 수 있는 두 번째 방법을 이용하여 로그인을 시도해 보겠다.

username: admin, password: FLAG로 로그인했더니 동일하게 FLAG가 도출되는 것을 확인할 수 있다.

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] session-basic  (0) 2023.08.13

+ Recent posts