OverTheWire이라는 워게임 사이트에 있는 다양한 문제중에 리눅스 관련 워게임인 Bandit을 풀어보았습니다. Bandit은 Level34까지 문제를 리눅스 명령어로 비밀번호를 얻어 해결해 나가는 방식의 워게임입니다. MacOS의 터머널을 이용하여 각 문제를 해결해 나갔습니다.
ls(List)는 현재작업디렉토리의내용을화면에표시해주는명령어입니다. ls로 현재 디렉토리에 있는 내용을 확인해 보니 readme라는 파일이 있었습니다. 파일의 내용을 출력해주는 명령어인 cat을 확인하여 readme안에 있는 내용을 확인해보니 비밀번호를 확인할 수 있었습니다.
page라는 파라미터에 숫자가 들어가는데 페이지 변수 값이 달라지면서 해시 값이 달라지는 것을 보아 flag가 있는 페이지를 찾는 문제이고 페이지의 경우의 수가 많이 있는 것 같습니다.
BurpSuite의 Intruder 도구를 통해 URL의 파라미터 변조를 자동화하여 문제를 풀수도 있지만 BurpSuite가 설치되있지 않은 관계로 파이썬 코드를 짜 문제를 풀었습니다.
import requests
url = "http://ctf.j0n9hyun.xyz:2025/?page="
for i in range(1, 5000):
ans = requests.get(url+str(i))
if "HackCTF" in ans.text:
print(i)
break
print("/page=", i, "에 Flag 없음")
스크립트 결과
코드를 실행시키면 1225에서 멈추는 것을 확인할수있습니다.
/?page=1225를 입력하면 아래와 같이 flag가 출력되는 것을 확인할수있습니다.
HackCTF{0hhhhh_5o_g0od_try!}
다음 문제는 Guess me라는 문제입니다.
문제를 들어가보면 비밀 코드를 맞춰보세요. 성공하면 플래그를 뱉어낼 겁니다.라고 되어있고, 밑에 php코드가 적혀있습니다.