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

BELATED ARTICLES

more