반응형

HackCTF 문제 풀이 / Web - Read File (100)

 

https://ctf.j0n9hyun.xyz/challenges#Read%20File

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

Read File - 100점 문제를 풀어보도록 하겠습니다. 

아래 링크에 접속해 보도록 하겠습니다. 

이 페이지를 보면, 구글 페이지가 출력되고, url의 command 전달인자에 http://google.com이 이 넘겨지고 있습니다. 

이 전달인자의 값을 flag.php를 넘겨보도록 하겠습니다.

flag.php를 넘겨주면, Read File / File is flag.php만 출력하고 있습니다. 

이 전달인자를 필터링 하는 것으로 보입니다. 

이 전달인자를 조작하여 입력해보도록 하겠습니다. 

http://google.com 앞에 flag를 붙여서 입력하였더니, 그래도 구글 페이지가 출력되었습니다. 

flag 문자열이 필터링에 걸려진 것으로 보입니다. 

flag라는 단어가 필터링되어 없어져도 flag.php가 조합되도록 fflaglag.php를 입력해보았습니다.

그랬더니 아래와 같이 Flag 값이 출력되는 것을 볼 수 있습니다.

 

반응형
반응형

HackCTF 문제 풀이 / Web - Guess me (100)

https://ctf.j0n9hyun.xyz/challenges#Guess%20me

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

Guess me 100 문제를 풀어보도록 하겠습니다. 

우선 아래 링크에 접속하겠습니다.

http://ctf.j0n9hyun.xyz:2030/

접속을 해보면 아래와 같이 php 코드가 있고, 코드를 입력하는 부분과 제출 버튼이 있습니다. 

secret.txt를 입력하면 비밀코드가 아니라고 출력됩니다. 

그리고 url의 guess 전달인자에는 아래 텍스트 박스에 입력한 문자열이 입력됩니다. 

우선 코드를 한번 분석해 보겠습니다. 

$_Get 으로 입력된 값을 추출하고, if문에서 isset($guess) 함수를 호출하였는데, 이는 $guess로 설정된 변수가 있는지 확인합니다.
trim은 문자열 양 옆의 공백을 지우는 역할을 합니다. 
file_get_contents()는 전달인자로부터 텍스트를 읽습니다. 

그 다음에는 guess와 secretcode 값이 같도록 설정하면 flag를 출력하는 곳으로 분기됩니다. 

우선 guess 변수는 get으로 전달하는 값을 적절히 하면 if 문 아래로 갈 수 있을 듯 합니다. 
secretcode 변수가 문제인데 이는 filename 변수로부터 값을 읽어들이고, filename 변수는 secret.txt으로 저장되어 있습니다.

문제의 해결은 filename 변수값에 아무 값이나 대입하는 것입니다. 
이것이 가능한 이유는 extract() 메서드가 filename 변수를 선언한 뒤에 나타나기 때문입니다.

filename에 해당하는 파일을 찾고, 그 파일의 콘텐츠를 확인하는데 서버 내 파일이 없기에 Null 값을 리턴하는데, 
guess도 Null 값이 들어가면 됩니다. 

따라서 filename=아무문자&guess= 와 같이 주소창에 대입하면 원하는 flag를 찾을 수 있게 됩니다. 

반응형
반응형

HackCTF 문제 풀이 / Web - 보물 (100)

 

https://ctf.j0n9hyun.xyz/challenges

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

Web에 있는 보물 - 100점짜리 문제를 풀어보도록 하겠습니다. 

반응형

아래 링크에 접속하면 아래 페이지가 출력됩니다. 

버튼을 하나씩 눌러보겠습니다. 

http://ctf.j0n9hyun.xyz:2025

Page 1을 눌렀을 때, URL Parameter 에 page=1이라는 값이 전달되면서 해시 값 같은게 출력됩니다.

URL Parameter 에 page=4를 입력하였더니, 아래와 같이 출력됩니다. 

이지 숫자 중엔 비밀이 하나 있다는게 page=? 를 계속 넣어 보면서 Flag를 찾아야 하는 문제로 파악됩니다. 

 

그래서 간단하게 파이썬 코드를 통해 page 값을 1부터 시작하여 bottom-up 방식으로 하여, Flag를 찾아보도록 하겠습니다. 

re

아마 requests하고, response 되는 내용 중 HackCTF 문구가 있으면 break 해보도록 하겠습니다. 

어느 id에서 멈추는지 보겠습니다. 

아래 코드를 돌려보면 한 몇분동안 scan을 진행하고, page id가 1225로 되는 부분에서 멈추는 것을 볼 수 있습니다. 

import requests

url = 'http://ctf.j0n9hyun.xyz:2025/?page='

for i in range(1, 10000):
    response = requests.get(url + str(i))
    if "HackCTF" in response.text:
        print("page ", i, " => successes")
        break
    else:
        print("page ", i, " => failed")

page id를 1225로 입력하면, 아래와 같이 Flag가 출력되는 것을 볼 수 있습니다. 

이 Flag를 제출해보면 정답이 되는 것을 볼 수 있습니다.

반응형
반응형

HackCTF 문제 풀이 / Cryptography - Great Binary (50)

 

Great Binary 문제입니다. 

hoooo.zip이라는 파일이 있는데, download해서 파일을 열어보겠습니다.

hoooo.txt라는 파일이 있고, 이 파일안에는 이진코드가 있습니다. 

 

이진코드를 string으로 변환시켜 보겠습니다.

아래 링크에서 이진코드를 string으로 변환시켜 줍니다. 

아래 링크를 이용해서 변환해보겠습니다.

 

string-functions.com/binary-string.aspx

 

Binary to String Converter | Translate Your Binary to Text

Please note: any spaces or colons (:) in the binary string will be removed. Need to convert text to binary? Use Our Text to Binary Converter Tool! --- Read more about binary in Wikipedia Privacy Policy Sitemap Keywords: binary decode a string text, tool, o

string-functions.com

아래 이진코드를 string으로 변환하였더니 flag 값이 보입니다 

 

 

 

ctf.j0n9hyun.xyz/challenges

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

반응형

+ Recent posts