이번 풀이할 문제는 HackCTF의 보물 입니다.
제목 : 보물
문제 : http://ctf.j0n9hyun.xyz:2025/
http://ctf.j0n9hyun.xyz:2025/
보물 내 페이지 숫자 중엔 비밀이 하나 있지...그곳에 보물을 숨겨놨다. 원한다면 찾아봐라 모든 것을 그곳에 두고 왔다!
ctf.j0n9hyun.xyz:2025
이 문제를 통해 파이썬을 잘 배웠다고 생각하게 되었죠.
그럼 풀이 시작합니다.
풀이
링크를 통해 접속하면
다음과 같은 장면을 보시게 됩니다.
여기서 URL을 주목하시면서 페이지 버튼을 누르시면,
Page 1을 클릭했을 때 /?page=1이 붙게 됩니다.
Page 2는 /?page=2 가 붙게 되고요
동시에 페이지마다 다른 암호문 같은 것이 나타나게 됩니다.
끝에 = 나 == 가 존재하는 경우에 base64라고 의심할 수 있지만 그렇게 나타나는 경우가 없었습니다.
그래서.. 이걸 해독할 수도 없고 해서 page=4로 버튼에 없는 페이지를 넣어보았습니다.
그런데 page 4에 해당하는 페이지가 나타났습니다.
페이지에 비밀이 있다는 것이 flag가 있는 페이지를 찾아야 한다는 것으로 생각하고 페이지를 대입하는 코드를 작성하였습니다.
코드 작성
파이썬 코드를 작성할 때 requests라는 모듈이 필요합니다.
cmd 즉, 명령프롬프트를 실행하여 pip install requests를 입력하여 모듈을 설치합니다.
파이썬 업데이트가 안 되어있다면 업데이트 먼저 해주시면 되겠습니다.
모듈 설치 확인 이후 모듈을 사용하는 방법을 익히면서 코드를 작성합니다.
import requests
URL = "http://ctf.j0n9hyun.xyz:2025/?page="
for i in range(-2000,2000):
response = requests.get(URL+str(i))
if "HackCTF" in response.text:
print(i,"에서 flag 발견")
break
print("page",i,"에 flag없음")
해킹에서 파이썬을 굉장히 유용하게 쓴다는 것을 자주 깨닫습니다.
페이지가 음수 범위에서도 가능하기 때문에 -2000 페이지에서 2000페이지까지 작성하였습니다.
이 코드를 실행시키면 페이지 번호가 나타나게 되고 해당 번호를 URL에 대입하면 플래그를 얻을 수 있습니다.
감사합니다.