[그림 01] level23 시작


미션은 쿼리에 <script>alert(1);</script>를 넣으라고 하는 것 같습니다.

호호라, 그럼 한 번 저 문장을 입력해 보도록 해야겠습니다.


[그림 02] no hack


미션을 수행했더니 no hack이라고 뜨는군요.

위의 현상은 싱글 문자면 문제가 없지만 두 글자 이상이 쿼리로 전송되면, no hack이라는 답을 뱉어내는 것 같습니다.

예외 : <s 를 붙여서 쓰면 Your mission is to inject <script>alert(1);</script> 라고 나타나게 됩니다. 이것은 단순 오류현상인 것 같습니다.


[그림 03] 띄어쓰기 가능


쿼리문을 날려보았는데 띄어쓰기를 통해 보내보면 [그림 03] 과 같이 결과가 나오게 됩니다.

그러면 어떠한 방식으로 쿼리가 보내지는지 알아보도록 합시다.

주소창을 보니 [그림 04]와 같군요.

[그림 04] GET 방식 쿼리 전송


GET방식으로 URL 인코딩이 되어 올라가는 것을 확인할 수 있었습니다.

그렇다면, 이제 GET방식(URL 인코딩)을 이용하여 쿼리를 보내고, 우회를 해야 하다는 것을 알 수 있습니다.

하지만 %20(SPACE), %0a(NEXT LINE), %09(TAB)은 띄어쓰기 혹은 다음 라인과 같은 효과이기 때문에 인식이 되지 않을 어떤 문자를 넣어주어야 합니다.

그렇다면, 여기서 %00(NULL)을 사용하는 방법으로 우회를 시도해보는 것이 좋을 것 같습니다.

%00 그러니까 NULL은 어차피 PHP에서도 NULL로 해당되기 때문에 결국 붙여쓰는 게 됩니다.

들어올 때는 s NULL c NULL r NULL i NULL p NULL t NULL 이렇게 전송이 되지만, 결국 script가 된다는 의미입니다.

[그림 05] 결과


[그림 05]는 NULL을 첨부하여 문제를 풀이를 시도해본 결과입니다.

어째 결과가 좀 다릅니다. ㅎㅎ;

변화가 일어난 것을 긍정적인 의미로 나머지를 모두 입력해보았습니다.


?code=<%00s%00c%00r%00i%00p%00t%00>%00a%00l%00e%00r%00t%00(%001%00)%00;%00<%00/%00s%00c%00r%00i%00p%00t%00>

위와 같이 쿼리를 GET 방식으로 넘겨보았는데, [그림 05]와 같은 결과가 또 나타났습니다.

어라 이거 아닌가? 하며 뒤로가기를 해보았는데, 문제는 풀려있다는 것을 확인했습니다. 허허...


'WARGAMES > webhacking.kr - old' 카테고리의 다른 글

Webhacking.kr_No.27(150) - old  (0) 2019.10.25
Webhacking.kr_No.26(100) - old  (0) 2019.10.24
Webhacking.kr_No.25(150) - old  (0) 2016.12.08
Webhacking.kr_No.24(100) - old  (0) 2016.06.28
Webhacking.kr_No.20(200) - old  (0) 2016.06.28
Webhacking.kr_No.18(100) - old  (0) 2016.06.28
Webhacking.kr_No.17(100) - old  (0) 2016.06.28
Webhacking.kr_No.16(100) - old  (0) 2016.06.28

+ Recent posts