이 문제를 풀어보니 , 문제가 보여주고 있는 패턴만 금방 알아낸다면 이 문제는 매우 간단한 문제인 것을 깨달았습니다.

먼저 이 문제의 메인 화면 부터 봐보겠습니다.

"5번 파일에 플래그가 있다!" 라는 문구와 1 2 3 4 라 쓰여있는 버튼이 있습니다.

 

그런데 여기서 제가 느낀 특이점은 파일이 있다는 5번부터 버튼이 없는 것이었는데요.

일단 1 2 3 4 이 버튼들을 눌러보았습니다.

눌러보니 바로 Nop이라는 문구가 떴는데요 2 3 4 도 마찬가지였습니다.

 

그런데 여기서 눈여겨봐야할 점이있는데요. 바로 주소창에 추가된 ?id=1 이라는 문구입니다.

2를 눌렀을땐 ?id=2가 나왔고, 3 4 또한 저런 형식으로 나왔습니다.

 

저는 이를 통해 그럼 5라는 버튼이 있었다면, 5를 눌렀을 때도 1 2 3 4와 같이 ?id=5라는 문구가 쳐졌겠구나 생각하였습니다.

그래서 주소창에 직접 ?id=5를 쳐본결과

이렇게 플래그를 얻을 수 있었습니다!

'webhacking' 카테고리의 다른 글

webhacking challenge 26  (0) 2019.12.20

26번의 문제 메인 화면입니다. view-source를 눌러주면

 

이런 코드를 볼 수 있는데요. 이 코드를 

 

if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }

"GET으로 입력 받은 변수 id 값이 "/admin/"이라면, "no!"를 외치고 종료"

$_GET['id'] = urldecode($_GET['id']);

"GET으로 입력 받은 id 값에 그 id값을 urldecode하여 넣어준다"

if($_GET['id'] == "admin"){
    solve(26);
  }

"만약 GET으로 입력 받은 id가 "admin"과 일치하면 문제 해결"

 

이라고 저는 개인적으로 해석해 보았습니다.

 

 

분석 후 제가 첫번째로 해본 것은 주소창에 no가 나오도록 id=/admin/을 해보았습니다.

예상대로 no! 라는 문구가 나왔습니다.

이번엔 제대로, id에 admin을 인코딩하여 넣어주기로 하였습니다.

 

인코딩 표를 보며 한 결과,

%61%64%6D%69%6E  이렇게 나왔습니다.

 

 

이제 이걸 주소창에 치기만 하면 된다는 생각으로 해보았는데

?id=%61%64%6D%69%6E 를 치고 엔터를 누르는 동시에 

 

이와 같이 자동으로 %61%64%6D%69%6E 이 admin으로 바뀌었습니다...

 

 

이 원인을 찾기 위해 열심히 구글링 해본 결과,

 

브라우저는 입력 받은 데이터를 자동으로 인코딩하여 php로 보내면, php는 그 데이터를 자동으로 디코딩한다.

 

라는 것을 깨달았습니다.

즉, 제가 방금 %61%64%6D%69%6E 이렇게 보낸 데이터가 자동으로 인코딩이 되며 자동으로 admin이 된 것이었죠.

 

 

 

그렇다면 결론적으로 이 %61%64%6D%69%6E 이 데이터를 한 번 더 인코딩 시키면 되겠구나 생각하여 다시 인코딩해보았습니다.

 

그렇게 한번 더 인코딩하여,

%2561%2564%256D%2569%256E

라는 값이 나왔고 이를 주소창에 ?id=%2561%2564%256D%2569%256E 라고 친 결과.!

문제를 풀 수 있었습니다!

'webhacking' 카테고리의 다른 글

HackCTF - Web Hidden  (0) 2019.12.20

+ Recent posts