SQL Injection 1 (6주차-CTF)
이번에는 로그인 창이 아니라 검색 기능에서 SQL Injection을 사용하는 것으로 보입니다
그렇게 판단한 이유는 다른 UI를 클릭해도 별다른 반응이 없었고 단서로는 이 검색창밖에 없었기 때문입니다
먼저 이 검색 기능이 어떻게 작동하는지 파악해 봅시다
검색창에 "bello"를 입력했을 때 정상적으로 작동하는 것을 확인했습니다
그런데 "b"만 입력했을 때도 자동으로 "bello"가 검색되는 것을 확인 했고
이를 통해 현재 검색 기능이 LIKE 쿼리로 작동하고 있음을 추측할 수 있습니다
그렇다면 검색 기능의 동작을 대략적으로 이해했으니 이제 컬럼의 개수를 확인해 봅시다
5부터는 결과가 출력되지 않는 것을 확인했습니다 따라서 이 사이트의 컬럼 개수는 4개로 판단됩니다
컬럼 개수를 확인했으니 이제 데이터베이스 이름을 알아보도록 하겠습니다
데이터베이스 이름: sqli_1이라는 것을 확인했습니다
다음으로 현재 테이블이 어떤 것이 있는지 알아보도록 합시다
b%' union select table_name,2,3,4 from information_schema.tables where table_schema = 'sqli_1' #
위 코드를 입력하니 flag와 관련된 테이블이 보이기 시작했습니다
이 테이블의 컬럼을 확인해 보겠습니다
b%' union select column_name,2,3,4 from information_schema.columns where table_name = 'flag_table' #
해당 코드를 입력하니 스크린샷과 같이 flag라는 컬럼을 확인할 수 있었습니다.
이제 데이터를 추출해 봅시다.
ad%' union select flag,2,3,4 from flag_table #
위 코드를 입력하여 결과값을 확인할 수 있었습니다
그런데 plusFlag_Table에는 어떤 데이터가 들어있었을까요?
이를 확인해 보도록 하겠습니다
b%' union select column_name,2,3,4 from information_schema.columns where table_name = 'plusFlag_Table' #
여기에서도 flag가 있는 것을 확인했습니다
이번에는 해당 테이블의 컬럼을 확인해 봅시다
또 다른 정답이 있는 것을 확인했습니다!!