본문 바로가기

Web Hacking/Webhacking.kr

[Webhacking.kr] old-39 write up

 

 

입력폼이 하나 주어진다. 소스코드를 살펴보자.

 

 

사용자 입력값을 받아와 DB에 쿼리문을 날리고 있으며 '1'을 조회하고 있다. 해당 쿼리문에서 1이 조회되면 문제는 풀린다. 따라서 우리는 해당 쿼리문이 참이 되도록 해주면 된다!

 

필터링 부분을 보자.

 

 

역슬레쉬, 싱글쿼터를 필터링 하고 있고 substr함수를 이용해서 15자리 까지만 자르고 있다. 역슬레쉬는 빈칸으로 사라지나 싱글쿼터는 하나가 두개로 대체되고 있다.

 

쿼리문을 다시 보면 id부분에 사용자 입력값 앞에 싱글쿼터가 하나 붙어 있다. 우리는 admin을 입력하고 싱글쿼터를 닫아주기만 하면 문제를 해결할 수 있다. 

 

싱글쿼터가 두개로 대체되나 15자리까지만 사용자 입력값이 잘리기 때문에 마지막에 입력하면 싱글쿼터를 하나만 입력을 할수가 있다.

 

admin         '를 입력하면 문제가  해결된다!

 

 

 


 

Mysql에서 VARCHAR 타입의 문자열을 비교할 때는 공백을 패딩으로 추가하여 비교한다고 한다.

 

예를들어 VARCHAR(15)라고 정의된 컬럼이 존재하며 admin이라는 문자열이 입력될 경우 admin__________으로 남은 길이를 공백을 추가해 맞춰준다음에 비교를 진행한다고 한다.

'Web Hacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-54 write up  (2) 2024.02.26
[Webhacking.kr] old-18 write up  (0) 2024.02.26
[Webhacking.kr] old-06 write up  (0) 2024.02.23
[Webhacking.kr] old-15 write up  (0) 2024.02.23
[Webhacking.kr] old-17 write up  (0) 2024.02.23