도카이트

[Wargame] Webhacking.kr - old 27 본문

Wargame/Webhacking.kr

[Wargame] Webhacking.kr - old 27

dodoh4t 2022. 6. 17. 18:41
728x90
반응형

문제 화면

[old 27 - 문제 화면]

- SQL Injection 문제라고 친절히 알려주고 있다 !

- 무작정 시도해보기 전에 쿼리문이 어떤 형식으로 작성되어 있는지 확인해야하므로,

- 소스코드를 빠르게 살펴보도록 하자 !

 

 

소스코드

[old 27 - 소스코드]

- GET Method로 no 값을 입력받고 있다.

- no 값에 대해 preg_match 함수를 통해 #, select, 공백, limit 등을 대소문자 구분없이 필터링한다.

- no 값에 대하여 별도의 쿼터가 감싸져있지 않았으며, 대신 소괄호로 한 번 감싸져있다!

- id 값이 admin이 되는 경우, 해당 문제가 solve 된다 !

 

 

입력폼 대신 URL에 바로 no 값을 작성하여 전송하도록 한다. 처음 문제 풀이를 시도하면서 입력폼에

값들을 입력하여 SQL Injection을 시도하였다. 공백을 Tab (%09)가 아닌 %20을 사용하여 시도했는데,

입력폼에서 시도한 경우는 no hack이 출력되지 않았다가, URL에서 직접 입력한 경우 no hack이 출력

되었다. 입력폼에 %20을 단독으로 입력하여 submit 후 URL을 살펴보니 %2520으로 출력됨을 확인

할 수 있었다.. 따라서 필터링에 걸리지도 않지만, query error 도 덤으로 따라온다..

 

웬만하면 이런 문제들을 풀 때 GET 방식으로 파라미터 값을 받는 형식이라면, URL 주소창에서

직접 페이로드를 입력하는 것이 좋을 듯 하다..!!!

 

 

앞의 구문을 상쇄하는 구문 작성

[앞의 구문을 상쇄하는 구문 작성]

- 위 예제에서 사용한 구문은 다음과 같다.

- no=2)%09or%09id%09like%09%27admin%27--%09

- 앞서 소스코드에서 확인했듯이, no 값이 소괄호로 감싸져 있었으므로 기존 싱글쿼터 close 처럼 소괄호를 강제로

  닫아주는 부분이 필요하다. (사실 소괄호 간과하고 문제 푸는데 시간 많이 날렸다…)

- no 값에 guest의 no 값인 1을 피해서, 2를 입력하고 소괄후를 닫은 후 or 구문을 이용하여 앞에 작성된

  id=’guest’ 부분을 무시할 수 있도록 or%09id%09like%09‘admin’%27--%09를 작성한다.

- ‘admin’ 이후 주석부분도 %23을 사용했었으나, 필터링에 막혀서 --%09를 사용하여 주석화하였다.

- 구문을 입력 후 전송하면, 성공적으로 문제가 solve 되는 것을 확인할 수 있다!

728x90

'Wargame > Webhacking.kr' 카테고리의 다른 글

[Wargame] Webhacking.kr - old 33  (0) 2022.06.20
[Wargame] Webhacking.kr - old 32  (0) 2022.06.20
[Wargame] Webhacking.kr - old 26  (0) 2022.06.16
[Wargame] Webhacking.kr - old 25  (0) 2022.06.16
[Wargame] Webhacking.kr - old 24  (0) 2022.06.16
Comments