39번 - SQL Injection
2021. 1. 3. 11:39
'\\'가 ''으로 치환되며 '\''가 '\'\''으로 치환됩니다.
또한, 아이디를 15 글자까지 자르네요.
이후에 id의 길이가 14미만이고 값이 있을 경우 1을 리턴하면서 문제가 풀립니다.
이 문제는 SQL 언어의 타입 특성을 이용하면 될 것 같습니다.
하나의 가정을 해봅시다.
이 문제의 데이터베이스에서 아이디 값은 CHAR의 타입을 가지고 있다고 한다면, 이는 곧 비교할 대상의 어느 한 부분의 길이가 다른 한 쪽보다 못 미칠 경우 짧은 부분에 공백을 채워 길이를 맞춘 후 비교합니다.
예시)
'Hello!!' 와 'Hi!!' 비교
length('Hello!!') > length('Hi!!')
'Hello!!' 와 'Hi!! '(공백 3개 추가) 비교
불일치 판정
위의 예시에서 두 개의 비교대상의 길이는 각각 7, 4입니다.
이는 변함이 없습니다.
다만, 비교할 때만 공백을 채워 비교한다는 것입니다.
이러한 가정을 바탕으로 문제를 풀면 될 것 같습니다.
가정이라 한 이유는 문제를 풀기 전에는 직접적으로 알아낼 수 없는 것들은 어느 정도 예측하는 것이 필요하기 때문입니다.
'[▒] 보안 > webhacking.kr' 카테고리의 다른 글
38번 - Log Injection (0) | 2021.01.03 |
---|---|
37번 - 포트포워딩 (0) | 2021.01.03 |
36번 - recovery file (0) | 2021.01.03 |
35번 - sql injection (0) | 2020.12.31 |
34번 - debug(js) (0) | 2020.12.31 |