ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Error Based SQL Injection
    IT/웹 해킹 2024. 1. 10. 15:03

    [이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]

     

    • 목차
    1. Error Based SQL Injection 이란
    2. Error Based SQL Injection Process

    1. Error Based SQL Injection 이란

    사용자가 잘 못된 SQL문을 입력했을 때 화면에 데이터베이스에서 알려주는 오류 메시지를 이용하여 고의로 오류 메시지를 일으켜 데이터베이스의 정보들을 가져오는 것을 뜻한다. (이때 SQL오류 메시지가 화면에 출력되어야 쓸 수 있다.)

     

    2. Error Based SQL Injection Process

    • SQL Injection Point 찾기
    • Error 발생 함수 Test
    • 기존아이디 문구를 Select로 출력하기 -> 이제 SQLi 실행가능한 포맷완료
    • DB 이름 확인
    • Table 이름 확인
    • Column 이름 확인
    • Data 추출

     

    1) SQL Injection Point 찾기

     

    1
    2

     

    1번 화면은 기존의 존재하는 아이디를 입력했을 때 이미 존재하는 아이디로 나오는 것을 볼 수 있고,  2번 화면을 보면 중복아이디에 싱글쿼터를 붙여 검색하니까 syntax error의 오류 메시지가 뜨는 것을 확인할 수 있다. 그럼 포인트는 찾기 성공

     

    2) Error 발생 함수 Test

     

     

     

    extractvalue라는 함수를 이용하여 에러를 일으켜 원하는 문구의 오류 메시지를 띄워보는 작업을 진행해보았다. extractvalue는 첫 번째에 XML형식의 값을 두 번째 인자에 XPath조건식을 넣어 XML노드의 값을 반환하는 함수인데, 두 번째 인자에 유효하지 않는 표현식을 넣으면 에러가 발생하게 되는 원리이다.

     

     

     

    concat 함수를 넣어 0x3a(콜론의 16진수)와 기존 아이디를 넣어 앞의 그대로 나왔던 오류 메시지가 출력되는지 확인

    (concat은 문자열 합치기 함수)

     

    3) 기존아이디 문구를 Select로 출력하기

     

     

     

    selct 'normaltic' 을 넣어 그대로 normaltic을 가져오는 모습을 볼 수 있다. 이제 SQLi를 할 수 있는 포맷이 갖추어졌다.

     

    4) DB 이름 확인

     

     

     

    select database()를 입력하여 그대로 DB이름이 출력되는 것을 볼 수 있다. DB이름은 sefault_sql이다.

     

    5) Table 이름 확인

     

     

     

    삽입한 쿼리문 : table_name from information_schema.tables where table_schema = 'db이름' limit 0,1

    여기서 가져오는 테이블의 개수가 많게 되면 오류가 나게 되는데 limit 함수로 하나씩 가져올 수 있도록 한다.

    (컬럼 및 데이터 추출도 마찬가지이다.)

     

    6) Column 이름 확인

     

     

    삽입한 쿼리문 : column_name from information_schema.columns where table_name = 'table 이름' limit 0,1

     

    7) Data 추출

     

     

    user_pass는 필드에 가진 정보가 없다고 뜨길래 member 테이블의 pass 컬럼에서 데이터를 추출해 보았다. (비밀번호가 aaaa이다. 평문저장은 좀...)

    'IT > 웹 해킹' 카테고리의 다른 글

    Blind SQL Injection 자동화 툴 만들기 및 사용법 with Python  (0) 2024.01.11
    Blind SQL Injection  (1) 2024.01.10
    Union SQL Injection  (0) 2024.01.09
    SQL Injection  (2) 2024.01.09
    버프스위트(burp suite) 간단 사용법_Decoder  (0) 2024.01.08
Designed by Tistory.