level 02번의 설명을 보면 이전의 비슷한 문제라고 설명이 나와있다. (믿지 못한다면 확인해 보라고 한다..)
더해서 preg_replace() 함수를 통해서 union, order, select, from, group, by를 필터링하고 있다 설명한다.
소스보기를 통해서 살펴본 결과 level 01과 동일하다 물론 union, order, select, from, group, by는 NULL(공백) 필터링 되는 것을 확인 할 수 있었다.
실제로 웹 진단을 하다보면 문자를 공백 치환하는 경우를 많이 볼 수 있는데 조치가 미흡할 경우 우회할 수 있는 방법이 많이 있다.
예를들면 <script>태그 중 script를 공백으로 치환하는 경우인데, 조치 미흡으로 인해 <scrscriptipt>를 사용하게 되면 가운데 script가 공백으로
치환되면서 <script>가 먹히는 경우가 있다. (최근 실제로 먹히는 경우는 드물다.)
이를 바탕으로 문제를 접근해보도록 하자.
1.
1 ununionion selselectect 1,2를 활용해서 컬럼 수를 확인해 본다.
실제로 가운데 union과 select가 공백으로 치환되면서 query문에 1 union select 1,2 가 들어가면서 컬럼이 2개인 것을 확인해 볼 수 있었다.
level 01과 동일하기 때문에 바로 flag 값을 시도해보자!
2.
1 ununionion selselectect 1, password frfromom users where id=1 를 사용해서 flag 값을 획득!
이와 같이 flag 값을 얻을 수 있었다.
flag 값은 WEBSEC{BecauseBlacklistsAreOftenAgoodIdea}이다.
참고
https://mokpo.tistory.com/145?category=492066
'워게임 > Websec.fr' 카테고리의 다른 글
[websec.fr] babysteps - Level 04 (0) | 2021.07.18 |
---|---|
[websec.fr] easy - Level 08 (0) | 2021.07.14 |
[websec.fr] babysteps - Level 25 (0) | 2021.07.07 |
[websec.fr] babysteps - Level 17 (0) | 2021.07.04 |
[websec.fr] babysteps - Level 01 (0) | 2021.07.03 |