ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Renewal] webhacking.kr old-39 [100]
    $ 웹 해킹 $/webhacking.kr 2020. 1. 11. 16:01

     

    심플한 입력창입니다.

    소스코드를 확인해 보겠습니다.

     

    이문제는 입력하는 칸에는 15글자만 가져오고, 쿼리문에서는 13글자 이하여야 한다고 합니다.

    하지만 id쪽 쿼리문을 보면 싱글쿼터를 열고 닫지 않은것을 확인할 수 있는데, 입력하는 입장에서 쿼리문을 닫아야 하지만 하나의 싱글쿼터가 입력이 되면 싱글쿼터 2개로 치환을 합니다. ' -> '' 

     

    그렇기 때문에 '를 입력하기 쉽지가 않습니다.

    mysql을 공부하다가 알게 된 사실이 하나 있는데 'a' 와 'a      ' 와 똑같이 인식을 한다는 점입니다.

     

    해당 문제에서 깊게 다룰 이야기는 아니니 간단하게 설명을 하자면..

    mysql 에서 칼럼의 형식을 지정할때 char, varchar 등등 여러 형식이 존재 하는데 char 형식일때 생기는 상황입니다.

    char(5) 라고 테이블을 만들때 선언을 하고, '1234' 라는 값을 넣으면 '1234_'( _은 공백을 시각화 하기위한 문자입니다.) 와 같이 남은 부분이 공백으로 채워집니다.

     

    그리고 데이터를 불러올때 오른쪽공백을 제거하고 가져온다고 합니다.

     

    그래서 "admin_________'"을 입력하면 ' 가 15번째 있으면 ''로 바뀌면서 15~16번 인덱스를 차지하게 되는데 substr때문에 15번인덱스 까지만 가져오기 때문에 우회가 가능합니다.

     

     

     

    댓글

Designed by Tistory.