첫 화면에 1,2,3 디폴트로 값이 들어가 있는것을 확인하고 go를 눌러 결과 값을 확인해보았다.

각 id에 해당하는 값과 권한을 출력해주는 것 같다.

 

소스코드를 보니 가장 먼저 쿼리문이 보인다.

SELECT user_id, user_privileges, user_name FROM users WHERE (user_id in (".$selector."));

보니 tmp 값이 implode 되어 쿼리 문에 들어가서 출력되는것 같다.

 

여기서 보아야 할 포인트는 tmp값이 1미만일 경우 unset 함수를 호출 한다는 것이다.

그러면서 count값이 줄어들면서 반복하는데 그러다보면 배열 끝에 있는 일부 요소 체크하지 않게 되는점을 이용한다.

 

일단 user_password에 flag 값이 있을 것이라고 추측하여 쿼리를 만들면 앞선 구문을 맞추기 위해서 아래와 같이 된다.

)) union select user_password,user_name,3 from users--

 

또한 임의로 체크 값을 체크하지 못하도록 0을 계속해서 추가해 주다보면 우리는 flag 값을 얻을 수 있다.

페이로드 0,0,0,0)) union select user_password,user_name,3 from users--

 

 

'워게임 > Websec.fr' 카테고리의 다른 글

[websec.fr] easy - Level 15  (0) 2021.09.12
[websec.fr] easy - Level 11  (0) 2021.08.22
[websec.fr] babysteps - Level 04  (0) 2021.07.18
[websec.fr] easy - Level 08  (0) 2021.07.14
[websec.fr] easy - Level 02  (0) 2021.07.11
복사했습니다!