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] babysteps - Level 01

Level 01을 보면 user ID로 username을 보는데 사용되고 db에서 username을 반환한다고 설명되어 있다. This application -> source를 통해서 SQLite3를 사용한다는 정보와 쿼리문이 보인다. ($injection을 통한..

mokpo.tistory.com

 

'워게임 > 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
복사했습니다!