Challenge 39 시작!!
소스코드를 보자!!
입력창에는 id 를 입력하는 것이고 replace() 를 이용하여 치환되는 문자들이 있었다.
그리고 substr() 를 통해 입력한 id 에서 15 글자를 전송하고 있었다.
조건은 id 는 14자 미만이어야 하고 참이 되어야 한다는 점이다.
먼저, 14자 미만을 만족하기 위해 공백을 이용하는 방법이 있다.
id 가 VARCHAR() 와 같은 데이터 타입이라면 공백을 제외하고 값을 저장하기 때문에 length() 함수로 길이를 조회했을 때 공백을 제외한 길이를 반환할 것이다.
하지만 CHAR() 로 저장이 된다면 공백이 포함된 길이를 반환할 것이다.
일단은 VARCHAR() 라고 생각하고 넘어가자.
두 번째로, 참이 되는 조건을 생각해보자.
where 부분을 자세히 보면 id=' 라고 되어 있는데 ' 로 마무리하지 않고 있다.
그렇다면 id 에 값을 입력하고 ' 로 마무리해주면 쿼리가 참이 될 것이다.
' 는 ' 두 개로 치환되지만 15 번째에 ' 를 입력하면 substr() 로 인해 하나의 ' 는 전송되지 않는다.
두 조건을 만족하는 15 자리의 입력값은 다음과 같다.
[id] + [공백] + '
어떤 id 값이 있는지 몰라 일단 a ' 라는 값으로 입력해보았다.
운좋게도 a 라는 id 가 있었다.
다른 id 도 입력해보니 admin, abc, 1, 2 등등 여러 가지 id 가 존재하고 있었다.
성공!!
'WarGame > webhacking.kr' 카테고리의 다른 글
Challenge 41 (0) | 2020.04.24 |
---|---|
Challenge 40 (0) | 2020.03.14 |
Challenge 38 (0) | 2020.03.11 |
Challenge 37 (0) | 2020.03.07 |
Challenge 36 (0) | 2020.03.06 |