본문 바로가기
CTF

2023 Pico CTF writeup (web/More SQLi)

by jh117jh 2023. 3. 30.
728x90

이번 문제는 진짜 삽질만 엄청 했던 문제다 ㅎㅎ

 

문제를 보면 이 웹사이트에서 flag를 찾을 수 있냐라고 묻고 있다.

 

사이트를 들어가 보면 

로그인 창이 나온다.

우선 간단한 로그인 우회를 해봤는데 

쿼리문이 username이랑 password랑 순서가 바뀌어 있어서 다시 시도해봤다.

어라...? 처음엔 필터링이 걸려있나 했는데 출력되는 걸 보니 필터링은 아닌 것 같고.... 

 

이것저것 바꿔보면서 시도하던 중 혹시 주석이 문젠가 하고 --을 입력해 봤더니

 

로그인에 성공했다! (이때 알아차렸으면 내 미래가 좀 달라졌을까....)

 

이제 검색창에 인젝션을 시도해 봐야 되는데 union을 쓰면 될 거 같아 시도해 봤다.

 

먼저 칼럼수를 알아내기 위해 ' union select 1 --부터 하나하나 늘려갔더니

 

3까지 입력하니까 출력이 되는 것을 볼 수 있다. 

칼럼수도 알아냈으니 데이터 타입을 확인한 결과

문자열도 출력되는 걸 확인했고 이제 db정보만 출력하면 된다고 생각하고 끝인 줄 알았다.

 

테이블 이름을 알아낼라고 ' union select table_name,2,3 from information_schema.tables--을 입력했는데

아무것도 출력이 안되는 것이다....

 

처음엔 오타가 있나 하고 다시 입력해 보고 필터링이 걸려있나 해서 문자들도 다 확인해 보고 오라클, mssql 등 다른 db 언어도 써보고 했는데 안돼서 한 3시간 삽질한 거 같다ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

나중에 아는 선배한테 질문한 결과

힌트에 쓰여있던 게 SQLite라는 db이름이었다... 나는 처음에 힌트를 봤을 때 알아차리지 못하고 넘어간 게 이런 결과를 불러왔다.

이래서 경험이 중요하고 다양한 db를 접해봐야 되는구나....

진짜 울면서 SQLite 문법 찾아보고 ' union select name,2,3 from sqlite_master -- 입력했더니

진짜 너무 행복했다 ㅎㅎㅎㅎ

 

테이블 이름을 확인하고 다 열어본 결과

' union select sql,2,3 from sqlite_master where tbl_name = 'more_table'--

more_table에 flag가 있는 게 확인되었다.

바로 확인해 보니

' union select flag,2,3 from more_table --

 

 

flag를 찾아냈다~~~

728x90